检查float是否接近数组中存储的任何float


问题内容

我需要检查给定的浮点数是否在给定的公差范围内接近 浮点数 数组中的 任何 浮点数。

import numpy as np

# My float
a = 0.27
# The tolerance
t = 0.01
# Array of floats
arr_f = np.arange(0.05, 0.75, 0.008)

有没有简单的方法可以做到这一点?喜欢的东西if a in arr_f:,但允许在差异的一定误差?


“允许容忍”是指以下含义:

for i in arr_f:
    if abs(a - i) <= t:
        print 'float a is in arr_f within tolerance t'
        break

问题答案:

使用np.isclose怎么样?

>>> np.isclose(arr_f, a, atol=0.01).any()
True

np.isclose比较每个元素的对象,以查看值是否在给定的公差范围内(此处由关键字参数指定,atol这是两个元素之间的绝对差)。该函数返回一个布尔数组。