python中的多维矩阵乘法

Zan*_*nam 2 python numpy matrix-multiplication

我有维度为 的矩阵 A500x2000x30和维度为 的矩阵 B 30x5

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

我想将1x2000x30A 中的每个与矩阵 B 相乘以获得大小为 的新矩阵1x2000x5

A X B应该给我一个维度矩阵500x2000x5

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

编辑:A和B都是numpy数组

fil*_*mor 5

如果你有numpy数组,你可以使用np.dot这个函数:

np.dot(A, B)
Run Code Online (Sandbox Code Playgroud)

它将完全按照您想要的方式进行操作,即“收缩” 的最后一个轴A与第一个轴B

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

 dot(a, b)[i,j,k,m] = sum(a[i,j,:] * b[k,:,m])
Run Code Online (Sandbox Code Playgroud)

  • 或 python 3.5 + 上的“a @ b” (4认同)