编程语言
首页 > 编程语言> > Python Numpy – 将小数字视为零

Python Numpy – 将小数字视为零

作者:互联网

我想用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

我如何让Numpy对待真正的小数字,如-7.09974814699e-30为零,并向我显示零.我之前也问了this question,如果你看一下矩阵,你会看到它充满了非常小的数字而不是零,而它应该是一个对角线矩阵,对角线上的数字和其他地方的零点……

谢谢…

解决方法:

>>> if np.abs(determinant<0.000001):
...     determinant=0
...
>>> print determinant
0

如果是数组,您可以使用单个操作执行此操作(请参阅我对其他问题的回答:https://stackoverflow.com/a/36395905/5088142)

要将小于eps的数组元素设置为零:

array[np.abs(array) < eps] = 0

标签:python,matrix,numpy,linear-algebra,determinants
来源: https://codeday.me/bug/20190608/1200838.html