目次
numpy
前回、数学計算用モジュールmathで色々試してみました。
【math】数学計算用モジュールmathを色々試してみた[Python]
mathモジュール 前回、Pythonプログラムのファイル名をライブラリ名にした時に起こるエラーに関して紹介しました。 今回は数学計算用モジュールである「math」を色々試…
今回はnumpyで値が近い値かどうかを判定するislcloseを紹介します。
ちなみに前回のmathモジュールでもiscloseが存在し、こんな感じで二つの値が近い値かどうかを判定するものでした。
import math
print(math.isclose(2, 2.1))
実行結果
False
numpyのiscloseも同じように近い値かどうかを判定するのですが、違うのはリスト形式で一度に比較ができるという点です。
それでは始めていきましょう。
numpyのisclose
使い方はmathモジュールのiscloseと同じで「np.isclose(値1, 値2)」です。
import numpy as np
a = 2
b = 2.1
print(np.isclose(a, b))
実行結果
False
値にはnumpyのリストを指定することもできます。
その場合はそれぞれ同じインデックスの要素同士が近い値かどうか判定されます。
import numpy as np
a = np.array([1, 2, 3])
b = np.array([3, 2, 1])
print(np.isclose(a, b))
実行結果
[False True False]
ちなみにmathモジュールのiscloseではnumpyのリストは使うことはできません。
import math
a = np.array([1, 2, 3])
b = np.array([3, 2, 1])
print(math.isclose(a, b))
実行結果
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[4], line 6
3 a = np.array([1, 2, 3])
4 b = np.array([3, 2, 1])
----> 6 print(math.isclose(a, b))
TypeError: only length-1 arrays can be converted to Python scalars
もう一つおまけにmathモジュールのiscloseでは普通のリストもだめです。
import math
a = [1, 2, 3]
b = [3, 2, 1]
print(math.isclose(a, b))
実行結果
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[3], line 6
3 a = [1, 2, 3]
4 b = [3, 2, 1]
----> 6 print(math.isclose(a, b))
TypeError: must be real number, not list
相対許容差を指定するには「rel_tol」、最小の絶対許容差を指定するには「abs_tol」をオプションに加えます。
import numpy as np
a = np.array([1, 2, 3])
b = np.array([1.1, 2, 3.0000000001])
print(np.isclose(a, b, rtol=0.1))
print(np.isclose(a, b, rtol=0.05))
実行結果
[ True True True]
[False True True]
import numpy as np
a = np.array([1, 2, 3])
b = np.array([1.1, 2, 3.0000000001])
print(np.isclose(a, b, atol=0.1))
print(np.isclose(a, b, atol=0.05))
実行結果
[ True True True]
[False True True]
全ての値が近い値かどうかを判定allclose
numpyのiscloseで値にリストを指定した場合、それぞれ同じインデックスの要素が近い値かどうか判定されました。
numpyには実はもう一つ、それぞれ同じインデックスの要素が全て近い値かどうかを判定するallcloseというものがあります。
こちらもでも相対許容差を指定する「rel_tol」、最小の絶対許容差を指定する「abs_tol」が使えます。
import numpy as np
a = np.array([1, 2, 3])
b = np.array([1.1, 2, 3.0000000001])
print(np.allclose(a, b, rtol=0.1))
print(np.allclose(a, b, rtol=0.05))
実行結果
True
False
import numpy as np
a = np.array([1, 2, 3])
b = np.array([1.1, 2, 3.0000000001])
print(np.allclose(a, b, atol=0.1))
print(np.allclose(a, b, atol=0.05))
実行結果
True
False
次回はnumpyで値が同じかどうか、大きいか小さいかを判定する方法を紹介します。
【NumPy】値が同じか(equal, not_equal, array_equal)、大きいか(greater, greater_equal)、小さい…
numpy 前回、numpyで近い値かどうかを判定するiscloseを紹介しました。 今回は値が同じか、大きいか、もしくは小さいかを判定する方法を紹介します。 それでは始めてい…
ではでは今回はこんな感じで。
コメント