NumPy点阵产生2d数组和3D数组元素

时间:2017-09-25 04:17:59

标签: python arrays numpy

A = np.array([[1,1],
              [2,2],
              [3,3]])

B = np.array([[[1],[2]],[[3],[4]]])

我认为B是2个矩阵的数组,我想要实现的是在AB的每个元素之间做点积,得到:

[[[3],
  [6],
  [9]], 
 [[7],
  [14],
  [21]]]

但如果我np.dot(A,B),我会

[[3,7],
 [6,14],
 [9,21]]

如何在这里得到我想要的东西?

1 个答案:

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