Python 矩阵与三维数组的Numpy乘法

Python 矩阵与三维数组的Numpy乘法,python,numpy,matrix-multiplication,numpy-ndarray,Python,Numpy,Matrix Multiplication,Numpy Ndarray,我试着用k乘以k矩阵 W=np.array([[W_11,...,W_1k],...,[W_k1,...W_kk]]) A=np.array([A_1,...,A_k]) (其中W_ij是数字) 一个(k,m,m)多维数组 W=np.array([[W_11,...,W_1k],...,[W_k1,...W_kk]]) A=np.array([A_1,...,A_k]) 其中A_i是m×m矩阵 如果 其中a_i是数字,然后是numpy.dot 点(W,A)只产生法向矩阵向量积,即C有形状

我试着用k乘以k矩阵

W=np.array([[W_11,...,W_1k],...,[W_k1,...W_kk]])
A=np.array([A_1,...,A_k])
(其中W_ij是数字) 一个(k,m,m)多维数组

W=np.array([[W_11,...,W_1k],...,[W_k1,...W_kk]])
A=np.array([A_1,...,A_k])
其中A_i是m×m矩阵

如果

其中a_i是数字,然后是numpy.dot

点(W,A)只产生法向矩阵向量积,即C有形状(k,1),一个有形状

C[i]=np.数组([W_i1a_1+W_i2a_2+…W_ik*a_k])

我想知道的是,将W和A相乘的最佳方法是什么,其中A不一定是向量,即A_I是m×m矩阵,它模仿乘积,就像A_I=[A_I],即我希望C=np。点(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)

应该做这项工作。

查看np.EIN简单添加一个python标记谢谢。它似乎能完成任务。