Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 计算一个矩阵数组与另一个矩阵的行或列的点积_Python_Numpy_Linear Algebra_Tensor_Dot Product - Fatal编程技术网

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
这是如何工作的吗?我不知道我的错误是什么,也不知道使用该函数是否可行。@AlexR
tensordot
不起作用,因为我们需要保持第一个轴与它们对齐。请阅读此处了解更多信息-。谢谢!您知道使用
np.tensordot
这是如何工作的吗?我不知道我的错误是什么,也不知道使用该函数是否可行。@AlexR
tensordot
不起作用,因为我们需要保持第一个轴与它们对齐。阅读此处了解更多信息-。