多数のfloatの配列で要素ごとの比較を行うと、間違った結果が得られます。
例:
import numpy as np
a = np.arange(4, 5 + 0.025, 0.025)
print a
mask = a==5.0
print mask
na = a[mask]
print na
上記のコードを実行すると、a == 5.0ではインデックスのTrue値が得られません。値は実際には5.0です。また、配列のdtypeをnumpy.doubleに設定してみましたが、浮動小数点の精度の問題である可能性があります。しかし、それでも間違った結果が返されます。
私はここで何かが欠けていると確信しています....誰かが私を正しい方向に向けたり、上記のコードの何が問題になっているのか教えてもらえますか?
ありがとう!
浮動小数点型を使用np.isclose
する場合、ここで不正確さがあります。配列をスカラー浮動小数点値と比較するために使用します。
In [50]:
mask = np.isclose(a,5.0)
print(mask)
na = a[mask]
na
[False False False False False False False False False False False False
False False False False False False False False False False False False
False False False False False False False False False False False False
False False False False True False]
Out[50]:
array([ 5.])
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加