Python 多重矩阵乘法
在numpy中,我有一个n3x3矩阵数组。这将是我如何存储它们的一个示例(我正在提取内容): 我还有一个3向量数组,这是一个例子: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向量的形状(在投射到
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)