v92*_*23z 5 arrays performance numpy matrix multiplication
我有两个2×2复杂矩阵数组,我想知道将它们相乘的最快方法是什么。(我想对矩阵数组的元素进行矩阵乘法。)目前,我有
numpy.array(map(lambda i: numpy.dot(m1[i], m2[i]), range(l)))
Run Code Online (Sandbox Code Playgroud)
但是能做得更好吗?
谢谢,
v923z
如果m1和是2x2 复数矩阵的m2一维数组(l,2,2),那么它们本质上具有形状。因此最后两个轴上的矩阵乘法相当于将 的最后一个轴m1与 的倒数第二个轴的乘积相加m2。这正是np.dot所做的:
np.dot(m1,m2)
Run Code Online (Sandbox Code Playgroud)
或者,由于您有复数矩阵,也许您想取m1第一个的复共轭。在这种情况下,请使用np.vdot.
附言。如果m1是2x2 复杂矩阵的列表,那么也许看看您是否可以重新排列代码以从一开始就创建m1一个形状数组。(l,2,2)
如果不可能,则使用列表理解
[np.dot(m1[i],m2[i]) for i in range(l)]
Run Code Online (Sandbox Code Playgroud)
会比使用mapwith更快lambda,但是执行l np.dots 会比上面建议的np.dot在两个形状数组上执行 1 慢(l,2,2)。