python - Numpy:查找包含浮点值的两个文件之间的差异

标签 python numpy

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

查找 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])
<小时/>

请注意,在处理 float 时,您很少想要与相等性进行比较,例如与

np.abs(a-b) == 0

或者相反,

np.abs(a-b) != 0

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

所以使用类似的东西

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/

相关文章:

python - 在 for 循环中创建多个数组 (Python)

python - 将 pandas 数据框转换为带索引的元组列表

python - 沿指定轴的两个 3D 矩阵之间的 np.dot 乘积

python - 在 tensorflow 中预测上传的图像时如何解释 expand_dims

python - 尝试 numba 的包装

python - Python 标准库中的所有类文件对象都具有 `name` 属性吗?

python - 为什么我的脚本会引发TypeError : 'int' object is not subscriptable

python - 在 python 中使用 matplotlib 的脂肪带

python - 在 Twilio 的 Django/Python 中访问 DateCreated 和 DateUpdated

python - 如何使用 Tensorflow 向张量添加维度