2017-09-25 49 views
1
A = np.array([[1,1], 
       [2,2], 
       [3,3]]) 

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

我认为B为2的矩阵阵列,我要实现的是做AB各元素之间的点积,得到:二维阵列的NumPy的点prodoct和3D数组元素明智

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

,但如果我这样做np.dot(A,B),我得到

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

如何得到我想要的吗?

+0

您可以使用随机数组而不是全部为零作为'A'并向我们展示预期的输出? – Divakar

+0

@Divakar完成,非常感谢 – beedrill

+0

太棒了,谢谢。 – Divakar

回答

1

我们可以使用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) 
+0

或者在python> 3.5,'A @ B' – Eric