我有两个大小分别为NxK和MxK的矩阵A和B.我希望计算大小为N×M×K的张量C,使得C(i,j,k)= A(i,k)* B(j,k)。
如何在numpy中有效地实现这一点? 所有尺寸都很大,因此,循环不是一种选择。
答案 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)