矩阵和 3 维数组的 Numpy 乘法

Numpy multiplication of matrix and 3 dimensional array

我正在尝试将 k 乘以 k 矩阵,比方说,

W=np.array([[W_11,...,W_1k],...,[W_k1,...W_kk]])

(其中 W_ij 是数字) 和一个 (k,m,m) 多维数组,比方说,

A=np.array([A_1,...,A_k])

其中 A_i 是 m x m 矩阵。

如果

A_i=[a_i]

其中 a_i 是数字然后 numpy.dot

C=np.dot(W,A) 仅产生法线矩阵向量积,即 C 具有形状 (k,1) 并且一个具有

C[i]=np.array([W_i1a_1+W_i2a_2+。 ..W_ik*a_k])

我想知道什么是将 W 和 A 相乘的最佳方法,其中现在 A 不一定是向量,即 A_i 是 m x m 矩阵,它模仿产品好像 A_i=[a_i],即我希望 C=np.dot(W,A) 具有形状 (k,m,m) 并且 C[i] 应该是m乘m矩阵

W_i1A_1+...W_ikA_k

当然我可以用循环来做到这一点,但我正在寻找一个有效的解决方案。

根据我从你的问题中了解到的,你可以使用numpy.einsum:

C = np.einsum('ij,jkl->ikl', W, A)

应该完成这项工作。