タブ区切りの.txtファイルがあり、テキストファイルと同じ形式のPythonのマトリックス配列にインポートしようとしています。
123088 266248244266266244277
123425 275244241289248231
123540 156654189354156987
上記のもの(多くは200)には、Python)に渡し、そこからマトリックス配列を作成するときに同じフォーマットを維持したい、非常に多くの行があることに注意してください。
私がこれのために持っている現在のコードは次のとおりです。
d = {}
with open('file name', 'rb') as csv_file:
csv_reader = csv.reader(csv_file, delimiter='\t')
for row in csv_reader:
d[row[0]] = row[1:]
それは私がそれをするために必要なことをわずかに行いますが、それに対する私の目標目標ではありません。 print(d [0,3])に入力できるコードを終了すると、248が吐き出されます。
最初に、それを辞書にロードしますが、辞書は必要なリストのリストを取得しません。
CSVモジュールを使用して、次のようなリストのリストを生成するのは非常に簡単です。
import csv
with open(path) as f:
reader = csv.reader(f, delimiter="\t")
d = list(reader)
print d[0][2] # 248
これにより、文字列のリストのリストが得られるため、数値を取得するには、intに変換する必要があります。
ただし、大きな配列がある場合(または何らかの数値計算を行う場合)、 NumPy または pandas のようなものの使用を検討する必要があります。 NumPyを使用する場合は、次のようにします。
import numpy as np
d = np.loadtxt(path, delimiter="\t")
print d[0,2] # 248
おまけとして、NumPy配列を使用すると、ベクトル/行列演算をすばやく実行できます。 (また、d[0][2]
はNumPy配列でも動作します)。
これを試して:
d = []
with open(sourcefile,'rb') as source:
for line in source:
fields = line.split('\t')
d.append(fields)
print d[0][1]
は266を印刷します。
print d[0][2]
(配列が0ベースであることを思い出してください)は248を出力します。
入力と同じ形式でデータを出力するには:
for line in d:
print "\t".join(line)
print(d[0,3])
output 248の作り方がわかりませんが、これはprint(d[0][3])
output 248になります。ライン。
import csv
Text_Input = r"<.txt file>"
listoflists= []
with open(Text_Input) as txtfile:
reader = csv.reader(txtfile)
for row in reader:
listoflists.append([int(row[0].split()[i]) for i in
range(len(row[0].split()))])