具有numpy中两个3D阵列的最后两个轴的点积

Lei*_*Hua 1 arrays product numpy dot-product theano

我尝试做两个3D numpy数组的点积.假设我有一个形状为(2,3,2)的数组x,其值如下:

array([[[0, 0],
       [1, 1],
       [1, 1]],

      [[1, 0],
       [0, 1],
       [1, 1]]])
Run Code Online (Sandbox Code Playgroud)

我有另一个3D数组y,形状为(2,2,3),值为:

array([[[0, 0, 0],
        [1, 0, 1]],

       [[0, 1, 1],
        [1, 1, 1]]])
Run Code Online (Sandbox Code Playgroud)

现在我想在最后两个轴上做xy的点积.我的意思是我想生成结果

x[0].dot(y[0]) 
x[1].dot(y[1])
Run Code Online (Sandbox Code Playgroud)

有没有简单的方法来做到这一点?我已经尝试使用x.dot(y),但它没有用.谢谢!

use*_*ica 5

在NumPy 1.10及以上,这是

np.matmul(x, y)
Run Code Online (Sandbox Code Playgroud)

如果你至少使用NumPy 1.10和Python 3.5,那么也可以写成

x @ y
Run Code Online (Sandbox Code Playgroud)

  • 和旧的numpy上的`np.einsum('ijk,ikm-> ijm',x,y)` (4认同)