如何将一系列矩阵相乘?

问题描述 投票:-1回答:1

我有一个矩阵的小数组,我试图将它们以A * B * C * D的形式相乘,其中A是第一个矩阵,B是第二个矩阵,依此类推。我已经尝试过此代码:

matrix = matrices[0]
for m in matrices[1:]:
    matrix = np.matmul(matrix, m)

但是,我相信这种乘法是错误的,因为我得到了不正确的输出变量,并且我对其余的代码进行了三重检查,所以我相信这就是问题所在。如何将这个数组中的所有矩阵相乘?另外,数组的长度将根据输入文件而有所不同,因此我不能使用A * B * C的方法。

python numpy matrix-multiplication
1个回答
0
投票

您的用于将一系列矩阵相乘的代码应该起作用。这是一个使用您的方法和一些简单矩阵的示例。

import numpy as np

matrices = []
matrices.append(np.eye(3,dtype=float))
matrices.append(np.matrix('1.0,2.0,3.0;4.0,5.0,6.0;7.0,8.0,8.0'))
matrices.append(np.eye(3,dtype=float))
matrices.append(np.linalg.inv(np.matrix('1.0,2.0,3.0;4.0,5.0,6.0;7.0,8.0,8.0')))

matrix = matrices[0]
for m in matrices[1:]:
    matrix = np.matmul(matrix, m)
print(matrix)

directmul = np.matmul(matrices[1],matrices[3])
print(np.subtract(matrix,directmul))

您的问题在其他地方:也许您是如何填充矩阵列表的,或者您是如何填充矩阵的。您是否在代码上尝试过unit testing?您是否尝试过python调试器?

© www.soinside.com 2019 - 2024. All rights reserved.