我想我昨天问了wrong question。我真正想要的是多次使用两个2x2xN
矩阵A
和B
,以便
C[:,:,i] = dot(A[:,:,i], B[:,:,i])
例如,如果我有一个矩阵
A = np.arange(12).reshape(2, 2, 3)
如何使用上述定义获得C = A x A
?是否有内置函数来执行此操作?
另外,如果我将A (shape 2x2xN)
与B (shape 2x2x1, instead of N)
相乘,我想得到
C[:,:,i] = dot(A[:,:,i], B[:,:,1])
答案 0 :(得分:2)
尝试使用numpy.einsum
,它有一点学习曲线,但它应该给你你想要的。这是一个让你入门的例子。
import numpy as np
A = np.random.random((2, 2, 3))
B = np.random.random((2, 2, 3))
C1 = np.empty((2, 2, 3))
for i in range(3):
C1[:, :, i] = np.dot(A[:, :, i], B[:, :, i])
C2 = np.einsum('ijn,jkn->ikn', A, B)
np.allclose(C1, C2)