【问题标题】:Finding smallest differences of values of txt files查找txt文件值的最小差异
【发布时间】:2017-07-29 03:16:06
【问题描述】:

我想将名为 A 的 txt 文件的特定列的值与名为 (A_1,A_2......A_10) 的其他 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)

【问题讨论】:

  • 您对“最小差异”的定义是什么?您是指您要查找的列中不同条目最少的文件吗?
  • 所以基本上我想通过将其与名为 A .我正在寻找这10个txt文件中,哪3个txt文件的差异之和最小@DavyM

标签: python numpy difference


【解决方案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)

【讨论】:

  • 我按照你的指示做了,但出现错误(文件“”,第 16 行 print(fname, diff) ^ IndentationError: expected an indented block.跨度>
  • 已解决问题,是 Tab 问题,非常感谢@Callum Iddon
猜你喜欢
  • 2019-05-04
  • 2016-02-01
  • 2013-03-14
  • 1970-01-01
  • 2020-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-27
相关资源
最近更新 更多