python:矩阵堆栈的i乘以矩阵的第i列

时间:2017-03-14 11:28:59

标签: python arrays numpy

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}}列。我尝试了iB并且无法获得我需要的内容。

请帮忙吗?谢谢!

1 个答案:

答案 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