8

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

if 0. in my_array:
    # do something

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

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

4

3 回答 3

11

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

np.any(np.absolute(my_array) < eps)
于 2013-10-11T23:43:21.597 回答
2

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

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

any(abs(x) < 0.5 * 10**(-decimal))
于 2013-10-11T23:35:10.087 回答
0

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

于 2013-10-12T08:09:34.800 回答