Numpy矩阵式点积

时间:2018-04-19 15:13:56

标签: python numpy

请原谅我可能是一个简单的问题。

是否有一种优雅的,numpy方式在张量中以矩阵方式应用点积?

e.g。

import numpy as np
M = np.array(range(12)).reshape(2,2,3)
N = np.array(range(12)).reshape(2,3,2)

然后我会有以下结果

array([[[ 0,  1,  2],
        [ 3,  4,  5]],

        [[ 6,  7,  8],
        [ 9, 10, 11]]])

array([[[ 0,  3],
        [ 1,  4],
        [ 2,  5]],

       [[ 6,  9],
        [ 7, 10],
        [ 8, 11]]])

然后我想要矩阵元素点操作,

np.dot(M[0], N[0]), np.dot(M[1], N[1])

是否有优雅,笨拙的方式同时应用此操作?

提前致谢!

更新#1

对不起我没说清楚!我实际上想要两个张量的矩阵元素的叉积。

我的目标是使用像

这样的元素获得另一个张量
result = (M[0].dot(N[0])
          M[1].dot(N[1]))

这意味着如果我得到具有形状[L,u,v]的张量M和具有形状[L,v,w]的张量N.我希望得到形状[L,u,w]的结果。最后得到矩阵元素交叉乘积运算。

我找到了问题

np.dot product between two 3D matrices along specified axis

但我认为这不是我想要的答案。

但我找到了问题

Numpy elementwise product of 3d array

正是我想要的。

非常感谢@Brenlla,@ Divakar,@ hpaulj回答。

0 个答案:

没有答案