2017-07-29 7 views
0

Aという名前のtxtファイルの特定の列の値と、(A_1、A_2 ...... A_10)という名前の他の10個のtxtファイルを一致させ、各txtファイルの差の2乗。ですから、基本的には、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

だから、基本的には、10個のtxtファイル(A_1 ...... A_10)のそれぞれの特定の列の値の差の合計を、Aという名前のtxtファイルと比較することで見つけたいと思っています。これらの10個のtxtファイルのうち、3つのtxtファイルの差の合計が最も小さいのは、@ DavyM – Hrihaan

答えて

1

現在のコードでは、各ファイルの相違点が見つかります。

各ファイル名を含むタプルのリスト(filesAndDiffs)をその違いと組み合わせて格納できます。

最後に、各タプルの2番目の要素に基づいてこのリストをソートし、このペアをプリントアウトする必要があります。最小3つだけを印刷するには[: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

ですが、エラーが発生しました(File ""、16行目 print(fname、 diff) ^ IndentationError:インデントブロックが予想されました – Hrihaan

+0

問題が修正されました。タブの問題でした。ありがとう@Callum Iddon – Hrihaan

関連する問題