python中的多维矩阵乘法

python中的多维矩阵乘法,python,numpy,matrix-multiplication,Python,Numpy,Matrix Multiplication,我有尺寸为500x2000x30的矩阵A和尺寸为30x5的矩阵B 您可以认为有500个2000x30实例,因为矩阵A是维度500x2000x30 我想将A中的1x2000x30与矩阵B相乘,以获得大小为1x2000x5的新矩阵 i、 e.A X B应该给我一个维度矩阵500x2000x5 显然,通过矩阵A循环500次是一种解决方案,但有没有有效的方法来实现这一点 编辑:A和B都是numpy数组如果您有numpy数组,则可以使用此函数: np.dot(A, B) 它将完全执行您想要的操作,即将A

我有尺寸为
500x2000x30
的矩阵A和尺寸为
30x5
的矩阵B

您可以认为有500个
2000x30
实例,因为矩阵A是维度
500x2000x30

我想将A中的
1x2000x30
与矩阵B相乘,以获得大小为
1x2000x5
的新矩阵

i、 e.
A X B
应该给我一个维度矩阵
500x2000x5

显然,通过矩阵A循环500次是一种解决方案,但有没有有效的方法来实现这一点


编辑:A和B都是numpy数组

如果您有
numpy
数组,则可以使用此函数:

np.dot(A, B)
它将完全执行您想要的操作,即将
A
的最后一个轴与
B
的第一个轴“收缩”:

对于二维数组,它等价于矩阵乘法,对于一维数组,它等价于向量的内积(无复共轭)。对于N维,它是a的最后一个轴和b的倒数第二个轴的和积:

 dot(a, b)[i,j,k,m] = sum(a[i,j,:] * b[k,:,m])

如果您有
numpy
阵列,则可以使用此功能:

np.dot(A, B)
它将完全执行您想要的操作,即将
A
的最后一个轴与
B
的第一个轴“收缩”:

对于二维数组,它等价于矩阵乘法,对于一维数组,它等价于向量的内积(无复共轭)。对于N维,它是a的最后一个轴和b的倒数第二个轴的和积:

 dot(a, b)[i,j,k,m] = sum(a[i,j,:] * b[k,:,m])

这在很大程度上取决于数据的表示方式。如果您有numpy数组,这应该是
numpy.dot
的一个相当简单的应用程序。这在很大程度上取决于数据的表示方式。如果您有numpy数组,那么这应该是python3.5+上的
numpy.dot
a@b
或python3.5上的
a@b
的一个相当简单的应用程序+