查找txt文件值的最小差异

时间:2017-07-29 03:16:06

标签: python numpy difference

我希望将名为A的txt文件的特定列的值与其他10个名为(A_1,A_2 ...... A_10)的txt文件匹配,并找到每个txt文件的差异平方和。所以,基本上,我希望Python打印出3个最小的差异及其对应的txt文件(A_1,A_2,..... A_10)。我已经能够找到差异,但坚持如何找到3个最小的差异及其相应的txt文件。

import numpy as np
filelist=[]
for i in range(1,11):
    filelist.append("/Users/Hrihaan/Desktop/A_%s.txt" %i)
for fname in filelist:
    data=np.loadtxt(fname)
    data1=np.loadtxt('/Users/Hrihaan/Desktop/A.txt')
    x=data[:,1]
    x1=data1[:,1]
    x2=(x-x1)**2
    x3=sum(x2)
    print(fname)
    print(x3)

1 个答案:

答案 0 :(得分:1)

您当前的代码会找到每个文件的差异。

您可以将这些存储在包含与其差异配对的每个文件名的元组列表(filesAndDiffs)中。

最后,您需要根据每个元组key=lambda x: x[1]中的第二个元素对此列表进行排序,然后打印出该对。要打印出最小的三个,请使用[:3]

import numpy as np
filelist=[]
for i in range(1,11):
    filelist.append("/Users/Hrihaan/Desktop/A_%s.txt" %i)
filesAndDiffs = []
for fname in filelist:
    data=np.loadtxt(fname)
    data1=np.loadtxt('/Users/Hrihaan/Desktop/A.txt')
    x=data[:,1]
    x1=data1[:,1]
    x2=(x-x1)**2
    x3=sum(x2)
    filesAndDiffs.append((fname, x3))
print("Filename, Diff")  # Print a title for the table
for fname, diff in sorted(filesAndDiffs, key=lambda x: x[1])[:3]:
    print(fname, diff)