矩阵和 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)
应该完成这项工作。
我正在尝试将 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)
应该完成这项工作。