Python 矩阵与三维数组的Numpy乘法
我试着用k乘以k矩阵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有形状
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标记谢谢。它似乎能完成任务。