【问题标题】:Check array for values equal or very close to zero检查数组的值是否等于或非常接近于零
【发布时间】:2013-10-20 03:32:27
【问题描述】:

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

if 0. in my_array:
    # do something

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

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

【问题讨论】:

    标签: python arrays performance numpy


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      没有理由在 Python 中循环;只需广播 abs 和 np.any:

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

      【讨论】:

        【解决方案3】:

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

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

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

        【讨论】:

          猜你喜欢
          • 2011-11-09
          • 2016-04-06
          • 1970-01-01
          • 1970-01-01
          • 2015-05-25
          • 2019-04-18
          • 1970-01-01
          • 2014-12-13
          • 2012-07-22
          相关资源
          最近更新 更多