2017-07-29 41 views
0

我想与命名(A_1,A_2 ...... A_10)其他10个txt文件匹配名为txt文件的特定列的值,找到的总和每个txt文件的差异平方。所以,基本上,我希望Python能够打印出3个最小的差异以及相应的txt文件(A_1,A_2,...... A_10)。我已经能够找到差异,但坚持如何找到3个最小的差异及其相应的txt文件。发现的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) 
+0

什么是你的“最小差异”的定义?你的意思是你要找的那个栏目中最少的项目是哪一个? –

+0

所以基本上我想通过将它与名为A的txt文件进行比较,找到10个txt文件(A_1 ...... A_10)中每个文件的特定列值的差异总和。我期望找到这10个txt文件,其中3个txt文件有差异@ DavyM – Hrihaan

回答

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) 
+0

我照您的指示值和最小,却得到了一个错误(文件“”,行16 打印(FNAME中, DIFF) ^ IndentationError:预计缩进块 – Hrihaan

+0

固定的问题,是一个标签的问题,非常感谢@Callum Iddon – Hrihaan