1

我正在尝试使用 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
...

不知道如何完成这个?开头是否正确?

4

1 回答 1

3

你可以使用

idx = np.where(np.abs(a-b) > 1e-6)[0]
firstidx = idx[0]

找到第一个索引,其中的值ab差异超过某个标称量,例如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

因为浮点表示的不准确性可能导致ab略有不同,即使它们的值应该完全相同,如果它们的值以无限精度表示。

所以使用类似的东西

np.abs(a-b) > 1e-6

反而。(请注意,您必须选择一个容差级别,例如 1e-6)。


这是一个简单的例子,展示了使用相等比较浮点数的缺陷:

In [10]: 1.2-1.0 == 0.2
Out[10]: False
于 2013-05-01T19:48:42.950 回答