python - 在numpy中将非常低的值设置为零

标签 python numpy

在 numpy 中,我有一个类似

的数组
[0 +  0.5j, 0.25 + 1.2352444e-24j, 0.25+ 0j, 2.46519033e-32 + 0j] 

将超低值设置为零的最快最简单的方法是什么

[0 +  0.5j, 0.25 + 0j, 0.25+ 0j, 0 + 0j] 

效率不是最重要的。

最佳答案

嗯。我对此并不满意,但这似乎可行:

>>> a = np.array([0 +  0.5j, 0.25 + 1.2352444e-24j, 0.25+ 0j, 2.46519033e-32 + 0j])
>>> a
array([  0.00000000e+00 +5.00000000e-01j,
         2.50000000e-01 +1.23524440e-24j,
         2.50000000e-01 +0.00000000e+00j,   2.46519033e-32 +0.00000000e+00j])
>>> tol = 1e-16
>>> a.real[abs(a.real) < tol] = 0.0
>>> a.imag[abs(a.imag) < tol] = 0.0
>>> a
array([ 0.00+0.5j,  0.25+0.j ,  0.25+0.j ,  0.00+0.j ])

您可以根据问题的需要选择容差。我通常使用一个数量级或更高的数量级

>>> np.finfo(np.float).eps
2.2204460492503131e-16

但这取决于问题。

关于python - 在numpy中将非常低的值设置为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14419290/

相关文章:

python - tf.random.Normal() 不生成不同的值

python - 如何用替换列表替换二维 numpy 数组中的一行?

python - 读取一个 matplotlib 图中的两个数据集

python - 需要从 2d numpy 数组中获取输入单元格的 3x3 邻域

python - 将项目拆分为行 Pandas

python - 如何从列表中过滤项目并将它们存储在另一个列表中?

python - "htop"style gui with python,怎么样?

访问 Flask 请求参数的 Pythonic 方式

python - 如何在使用 .after 时更新 GUI?

python - Numpy 一维数组 CumSquare 值