我有一个一维numpy
数组,我需要找出任何值是否为零或非常接近它。有了这条线,我可以快速检查零:
if 0. in my_array:
# do something
但我也有非常小的元素,如 1.e-22,我也想将其视为零(否则我会在路上得到除以零警告)
假设我的阈值是 1.e-6,我想有效地检查我的数组中是否有任何值小于该值。我怎样才能做到这一点?
我有一个一维numpy
数组,我需要找出任何值是否为零或非常接近它。有了这条线,我可以快速检查零:
if 0. in my_array:
# do something
但我也有非常小的元素,如 1.e-22,我也想将其视为零(否则我会在路上得到除以零警告)
假设我的阈值是 1.e-6,我想有效地检查我的数组中是否有任何值小于该值。我怎样才能做到这一点?
没有理由在 Python 中循环;只需广播 abs 和 < 并使用np.any
:
np.any(np.absolute(my_array) < eps)
如果您使用它进行测试,您可以使用numpy.testing.assert_almost_equal
正如文件所说,它使用类似于@phihag 建议的方法:
any(abs(x) < 0.5 * 10**(-decimal))
如果您经常这样做,您应该尝试使用 searchsorted,或者如果您有 scipy KDTree
(或cKDTree
取决于版本),以加快速度。