あなたが使用することができます
idx = np.where(np.abs(a-b) > 1e-6)[0]
firstidx = idx[0]
a
の値との値が のb
ような名目上の量よりも大きく異なる最初のインデックスを見つけるには、次のようにし1e-6
ます。
import numpy as np
a = np.loadtxt("path/to/file", float)
b = np.loadtxt("path/to/file2", float)
idx = np.where(np.abs(a-b) > 1e-6)[0]
firstidx = idx[0]
print(firstidx, a[firstidx], b[firstidx])
フロートを扱う場合、次のように等値で比較することはめったにないことに注意してください。
np.abs(a-b) == 0
またはその逆、
np.abs(a-b) != 0
浮動小数点表現の不正確さにより、値が無限の精度で表現されている場合、それらの値がまったくa
同じである必要がある場合でも、とb
がわずかに異なる可能性があるためです。
したがって、次のようなものを使用します
np.abs(a-b) > 1e-6
代わりは。(許容レベルを選択する必要があることに注意してください。たとえば、1e-6)。
以下は、等式を使用して float を比較することの落とし穴を示す簡単な例です。
In [10]: 1.2-1.0 == 0.2
Out[10]: False