2016-11-18 178 views
0

我有尺寸为500x2000x30的矩阵A和尺寸为30x5的矩阵B.Python中的多维矩阵乘法

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

我想从A乘以1x2000x30中的每一个与矩阵B,以获得尺寸为1x2000x5的新矩阵。

A X B应该给我维500x2000x5

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

编辑:A和B两者都是numpy的阵列

+1

即高度取决于数据是如何表示的。如果你有numpy数组,这应该是一个相当简单的'numpy.dot'应用程序。 python 3.5 +上的 – filmor

回答

3

如果你有numpy阵列可以使用np.dot功能如下:

np.dot(A, B) 

它会做的正是你想要的东西,即“合同”的AB第一轴的最后轴:

对于2 d阵列它相当于矩阵乘法,以及用于1-d ARR ays到载体的内部产物(没有复杂的偶联)。对于N维它是一个和积上的最后一个轴和第二个到最后B的:

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

或'a @ b' –