import numpy as np
M,N,R = 2,3,4
# For a 3-dimensional array A:
A = np.reshape(np.r_[0:M*N*R], [M,N,R], order = 'C')
# and 2-dimensional array B:
B = np.reshape(np.r_[0:M*R], [R,M], order = 'C')
我希望N*M
矩阵是i
的{{1}}的{{1}}乘以A
的{{1}}列。我尝试了i
和B
并且无法获得我需要的内容。
请帮忙吗?谢谢!
答案 0 :(得分:2)
使用np.einsum
,我们会 -
np.einsum('ijk,ki->ji',A,B)
让我们使用给定的样本验证结果,并使用矩阵乘法np.dot
-
In [35]: A.shape
Out[35]: (2, 3, 4)
In [36]: B.shape
Out[36]: (4, 2)
In [37]: A[0].dot(B[:,0])
Out[37]: array([ 28, 76, 124])
In [38]: A[1].dot(B[:,1])
Out[38]: array([226, 290, 354])
In [39]: np.einsum('ijk,ki->ji',A,B)
Out[39]:
array([[ 28, 226],
[ 76, 290],
[124, 354]])
对于何时使用einsum
dot-based
工具(如np.dot
/ np.tensordot
)相关的方面,此处为related post
。