Cyp*_*her 5 python numpy matrix linear-algebra determinants
我想用 Numpy 计算奇异矩阵的行列式(行列式为 0),当我打印行列式时,它显示一个非常小的数字(几乎为零 = -7.09974814699e-30)但本身不为零......
当我尝试用 %s、%d 或 %f 打印行列式时,有时它是零,有时是 -0 有时是 -7.09974814699e-30 。
这是代码:
import numpy as np
array = np.arange(16)
array = array.reshape(4, -1)
determinant = np.linalg.det(array)
print("Determinant is %s" % determinant)
print("Determinant is %d" % determinant)
print("Determinant is %f" % determinant)
Determinant is -7.09974814699e-30
Determinant is 0
Determinant is -0.000000
Run Code Online (Sandbox Code Playgroud)
如何让 Numpy 将非常小的数字(例如 -7.09974814699e-30)视为零并向我显示零。我之前也问过这个问题,如果你看一下矩阵,你会发现它充满了非常小的数字但不是零,而它应该是一个对角矩阵,对角线上的数字和其他地方的零......
谢谢...
您可以使用 截断较低有效数字np.round。但最好保持浮点运算的准确性。您需要控制的只是最终输出的格式和函数str.format。
In [7]: a=rand(12,12)
In [8]: deta=det(a)
#0.0063854296972496311
In [10]: detar=det(a.round(3))
# 0.0063817871557592153
In [12]: '{:.5f}'.format(deta)
Out[12]: '0.00639'
In [13]: '{:.5f}'.format(detar)
Out[13]: '0.00638'
Run Code Online (Sandbox Code Playgroud)
由于早期优化,最后一行显示错误结果。