Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.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_Performance_Numpy_Matrix_Matrix Multiplication - Fatal编程技术网

Python 多重矩阵乘法

Python 多重矩阵乘法,python,performance,numpy,matrix,matrix-multiplication,Python,Performance,Numpy,Matrix,Matrix Multiplication,在numpy中,我有一个n3x3矩阵数组。这将是我如何存储它们的一个示例(我正在提取内容): 我还有一个3向量数组,这是一个例子: vectors = np.ones((N, 3)) 我似乎不知道如何通过numpy将它们相乘,从而实现如下目标: result_vectors = [] for matrix, vector in zip(matrices, vectors): result_vectors.append(matrix @ vector) 使用结果\u向量的形状(在投射到

在numpy中,我有一个n3x3矩阵数组。这将是我如何存储它们的一个示例(我正在提取内容):

我还有一个3向量数组,这是一个例子:

vectors = np.ones((N, 3))
我似乎不知道如何通过numpy将它们相乘,从而实现如下目标:

result_vectors = []
for matrix, vector in zip(matrices, vectors):
    result_vectors.append(matrix @ vector)
使用
结果\u向量
的形状(在投射到阵列时)为
(N,3)
。 但是,由于速度的原因,列表实现是不可能的

我尝试了各种换位的np.dot,但最终的结果没有得到正确的形状。

使用-

步骤:

1) 保持第一个轴对齐

2) 求和减少输入阵列中最后一个轴的相对位置


3) 让剩余的轴(来自矩阵的第二个轴)按元素相乘。

看起来像是
matmul
可以与一点尺寸信息一起使用:
(矩阵@vectors[:,:,None])。挤压()
result_vectors = []
for matrix, vector in zip(matrices, vectors):
    result_vectors.append(matrix @ vector)
np.einsum('ijk,ik->ij',matrices,vectors)