我正在做一些矩阵计算,但得到了一些错误的值。
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)
我尝试了很多不同的矩阵乘法技术,但没有一个返回正确的值。问题是 python 以及它如何看待浮点值吗?
您似乎正在寻找矩阵点积而不是乘积(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)