Python Numpy - 将非常小的数字视为零

标签 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

如何让 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 Numpy - 将非常小的数字视为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36395509/

相关文章:

python - SWIG "out"类型映射返回地址而不是数据

c# - 将具有非托管导出的 C# DLL 加载到 Python 中

python - 如何获取 Scipy 稀疏矩阵(csr_matrix 和 csc_matrix)中每一行的总和和每一列的总和?

algorithm - 8-邻域中的最小点链接

python - 按索引列表从 numpy 数组中切片子数组

C++/OpenGL 将世界坐标转换为屏幕(2D)坐标

python - Pyparsing嵌套表达式: Return Nest Characters in ParseResults

python - 让python翻译正确的文件名

python - 在 numpy 中矢量化 VLAD 计算

Python 新手 : manipulating arrays