检查数组的值是否等于或非常接近零

时间:2013-10-11 23:04:30

标签: python arrays performance numpy

我有一个一维numpy数组,我需要知道任何值是零还是非常接近它。 有了这条线,我可以快速检查零:

if 0. in my_array:
    # do something

但我也有非常小的元素,比如1.e-22,我也想将其视为零(否则我会得到一个零除警告)

假设我的阈值是1.e-6,我想有效地检查我的数组中的任何值是否小于该值。我怎么能这样做?

3 个答案:

答案 0 :(得分:8)

没有理由在Python中循环;只是广播abs和<并使用np.any

np.any(np.absolute(my_array) < eps)

答案 1 :(得分:2)

如果您使用此功能进行测试,可以使用numpy.testing.assert_almost_equal

正如文件所说,它使用类似于@phihag的方法建议:

any(abs(x) < 0.5 * 10**(-decimal))

答案 2 :(得分:0)

如果您经常这样做,您应该尝试使用searchsorted,或者如果您有scipy KDTree(或cKDTree,具体取决于版本),以加快速度。