在numpy中将非常低的值设置为零 [英] set very low values to zero in numpy
本文介绍了在numpy中将非常低的值设置为零的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在numpy中,我有一个类似
In numpy I have an array like
[0 + 0.5j, 0.25 + 1.2352444e-24j, 0.25+ 0j, 2.46519033e-32 + 0j]
将超低值设置为零的最快,最简单的方法是什么
what is the fastest and easiest way to set the super low value to zero to get
[0 + 0.5j, 0.25 + 0j, 0.25+ 0j, 0 + 0j]
效率不是最重要的.
推荐答案
嗯.我对此并不满意,但这似乎可行:
Hmmm. I'm not super-happy with it, but this seems to work:
>>> 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 ])
,您可以根据自己的问题选择容忍度.我通常使用的数量级要比
and you can choose your tolerance as your problem requires. I usually use an order of magnitude or so higher than
>>> np.finfo(np.float).eps
2.2204460492503131e-16
但这取决于问题.
这篇关于在numpy中将非常低的值设置为零的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文