我希望将名为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)
答案 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)