1

Python を使用して 2 つのテキスト ファイルの違いを計算し、最初の値と相違が始まる場所を出力しようとしています。

使い方がわかりませんloadtxt

import numpy as np
a = np.loadtxt("path/to/file", float)
b = np.loadtxt("path/to/file2", float)    
while np.absolute(a - b) !=0:


1
2
3
...

これを終了する方法がわかりませんか?スタートは正しいですか?

4

1 に答える 1

3

あなたが使用することができます

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
于 2013-05-01T19:48:42.950 に答える