如何在numpy中计算两个矩阵的外积?

时间:2017-04-27 15:05:59

标签: numpy

我有两个大小分别为NxK和MxK的矩阵A和B.我希望计算大小为N×M×K的张量C,使得C(i,j,k)= A(i,k)* B(j,k)。

如何在numpy中有效地实现这一点? 所有尺寸都很大,因此,循环不是一种选择。

1 个答案:

答案 0 :(得分:1)

使用循环版本的迭代器的字面翻译作为np.einsum的字符串表示法,我们将有解决方案 -

np.einsum('ik,jk->ijk',A,B)

示例运行 -

In [2]: N,K,M = 3,4,5

In [3]: A = np.random.rand(N,K)

In [4]: B = np.random.rand(M,K)

In [5]: np.einsum('ik,jk->ijk',A,B).shape
Out[5]: (3, 5, 4)

In [6]: (N,M,K)
Out[6]: (3, 5, 4)