我正在尝试使用Python来计算两个文本文件之间的差异,并打印第一个值和它们开始分歧的位置。
我不知道如何使用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
...
不知道如何完成这个?开头是否正确?
最佳答案
你可以使用
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])
<小时/>
请注意,在处理 float 时,您很少想要与相等性进行比较,例如与
np.abs(a-b) == 0
或者相反,
np.abs(a-b) != 0
因为浮点表示的不准确可能会导致 a
和 b
略有不同,即使它们的值应该完全相同,如果它们的值以无限的精度表示。
所以使用类似的东西
np.abs(a-b) > 1e-6
相反。 (请注意,您必须选择容差级别,例如 1e-6)。
<小时/>这是一个simple example演示使用相等性比较 float 的陷阱:
In [10]: 1.2-1.0 == 0.2
Out[10]: False
关于python - Numpy:查找包含浮点值的两个文件之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16325258/