A = np.array([[1,1],
[2,2],
[3,3]])
B = np.array([[[1],[2]],[[3],[4]]])
我认为B
是2个矩阵的数组,我想要实现的是在A
和B
的每个元素之间做点积,得到:
[[[3],
[6],
[9]],
[[7],
[14],
[21]]]
但如果我np.dot(A,B)
,我会
[[3,7],
[6,14],
[9,21]]
如何在这里得到我想要的东西?
答案 0 :(得分:2)
我们可以使用np.dot
,就像这样 -
A.dot(B).T[0,...,None]
或np.tensordot
-
np.tensordot(B[...,0], A, axes=((1),(1)))[...,None]
或np.einsum
-
np.einsum('ijk,lj->ilk',B,A)
np.matmul
似乎也没有任何额外的工作 -
np.matmul(A,B)