我有一个一维numpy
数组,我需要知道任何值是零还是非常接近它。
有了这条线,我可以快速检查零:
if 0. in my_array:
# do something
但我也有非常小的元素,比如1.e-22,我也想将其视为零(否则我会得到一个零除警告)
假设我的阈值是1.e-6,我想有效地检查我的数组中的任何值是否小于该值。我怎么能这样做?
答案 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
,具体取决于版本),以加快速度。