Python 计算一个矩阵数组与另一个矩阵的行或列的点积
有两个数组,数组Python 计算一个矩阵数组与另一个矩阵的行或列的点积,python,numpy,linear-algebra,tensor,dot-product,Python,Numpy,Linear Algebra,Tensor,Dot Product,有两个数组,数组d带形状(3,10,10)和数组e带形状(3,10),如何计算d的第一个10x10矩阵与e的第一行、d的第二个10x10矩阵与e的第二行的点积,等等 例如,具有以下两个阵列: d = np.array([np.diag([1,1,1,1,1,1,1,1,1,1]), np.diag([2,2,2,2,2,2,2,2,2,2]), np.diag([3,3,3,3,3,3,3,3,3,3])]) e = np.a
d
带形状(3,10,10)和数组e
带形状(3,10),如何计算d
的第一个10x10矩阵与e
的第一行、d
的第二个10x10矩阵与e
的第二行的点积,等等
例如,具有以下两个阵列:
d = np.array([np.diag([1,1,1,1,1,1,1,1,1,1]),
np.diag([2,2,2,2,2,2,2,2,2,2]),
np.diag([3,3,3,3,3,3,3,3,3,3])])
e = np.arange(30).reshape((3,10))
如何计算3x10阵列:
array([[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
[20, 22, 24, 26, 28, 30, 32, 34, 36, 38],
[60, 63, 66, 69, 72, 75, 78, 81, 84, 87]])
我尝试过使用np.dot
和np.tensordot
,在这样做之前,我还对e
进行了换位并添加了一个新的轴,但我不知道如何解决这个问题。我们可以使用-
使用其optimize
标志使用BLAS
或np.matmul
-
np.matmul(d,e[...,None])[...,0]
注意:在Python3.x上,我们可以使用-
使用其optimize
标志使用BLAS
或np.matmul
-
np.matmul(d,e[...,None])[...,0]
注意:在Python3.x上,
np.matmul
可以替换为@operator
谢谢!您知道使用np.tensordot
这是如何工作的吗?我不知道我的错误是什么,也不知道使用该函数是否可行。@AlexRtensordot
不起作用,因为我们需要保持第一个轴与它们对齐。请阅读此处了解更多信息-。谢谢!您知道使用np.tensordot
这是如何工作的吗?我不知道我的错误是什么,也不知道使用该函数是否可行。@AlexRtensordot
不起作用,因为我们需要保持第一个轴与它们对齐。阅读此处了解更多信息-。