1. ホーム
  2. python

[解決済み] float が配列に格納されている任意の float に近いかどうかをチェックします。

2022-02-17 06:14:46

質問

与えられた浮動小数点が、与えられた許容誤差の範囲内で、以下のものに近いかどうかをチェックする必要があります。 任意のフロート を浮動小数点数の配列で返します。

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 は、2つのオブジェクトを要素ごとに比較し、値が与えられた許容範囲内にあるかどうかを調べます(ここではキーワード引数で指定します)。 atol これは2つの要素の差の絶対値である)。この関数は,ブール値の配列を返します.