【Numpy】二つの配列が近似値かどうかを判定する

二つの配列が「だいたい同じ(近似値)」かどうか判定したいと時があると思います。
そんな時に使えるのが、numpy.allcloseです。

早速サンプルコードを見てみます。

サンプルコード

まずは、近似値となる場合

import numpy as np

a = [1.0, 1.0]
b = [1.0000001, 1.000001]
print(np.allclose(a,b))
# => True

次に、近似値とならない場合

a = [1.0, 1.0]
b = [1.0000001, 1.1]
print(np.allclose(a,b))
# => False

ちなみに、どこまで近似値とするかは
ドキュメントにある通り二つのarrayの差の絶対値が、以下のような範囲に収まる時に近似値としています。

atol = 1e-08
rtol = 1e-05p
absolute(a - b) <= (atol + rtol * absolute(b))

atol, rtolnp.allcloseの引数で設定できるので、もし近似値の範囲を決めたい場合は引数で設定してください。

参考文献

コメント

タイトルとURLをコピーしました