numpy 给出错误的矩阵结果?

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

我正在做一些矩阵计算,但得到了一些错误的值。

import numpy as np
np.set_printoptions(formatter={'float': lambda x: "{0:0.2f}".format(x)})

#deltaT
arr1 = np.array([[0, 0.01, 0, 0.1],
                 [0, -0.05, 0, 0],
                 [0.05, 0, -0.01, 0],
                 [0, 0, 0, 0]])


#T1inv
arr2 = np.array([[0., 1., 0., -5],
                 [0, 0, 1, -2],
                 [1, 0, 0, -8],
                 [0, 0, 0, 1]])



# Multiply
arr3 = np.multiply(arr1, arr2)
print(arr3)

这返回了错误的值。它应该返回: Matrices entered on online matrix solver Matrix multiplication solution

我尝试了很多不同的矩阵乘法技术,但没有一个返回正确的值。问题是 python 以及它如何看待浮点值吗?

python arrays numpy matrix linear-algebra
1个回答
0
投票

您似乎正在寻找矩阵点积而不是乘积(dot vs multiply)。我还注意到,在您提供的代码中,与图像相比,数组顺序发生了翻转,这对于这些计算很重要。经过这些更改,代码应该如下所示(注意 arr2 在点积中首先传递)。

import numpy as np
np.set_printoptions(formatter={'float': lambda x: "{0:0.2f}".format(x)})

#deltaT
arr1 = np.array([[0, 0.01, 0, 0.1],
                 [0, -0.05, 0, 0],
                 [0.05, 0, -0.01, 0],
                 [0, 0, 0, 0]])


#T1inv
arr2 = np.array([[0., 1., 0., -5],
                 [0, 0, 1, -2],
                 [1, 0, 0, -8],
                 [0, 0, 0, 1]])



# Multiply
arr3 = np.dot(arr2, arr1)
print(arr3)
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.