つまり、4,000個の大きなgzip圧縮されたテキストファイルがあります。サイズが大きいため、1行ずつ合計する必要があります。理想的には(私は思う)1つを開いてから、他の3,999をループして、単純にそれらの値を最初の値に合計し続けたいと思います。これが私がこれまでに持っているものです
with gzip.open('foo1.asc.gz','r') as f:
for i in xrange(6): # Header is 6 lines
f.next()
line = f.readline()
foo1=map(float, line.strip().split())
print foo1
これにより、合計する必要のある値が返されfoo1
ます。したがって、出力はカンマで区切られたfloatのリストです(例:)[1.2, 6.0, 9.3...]
。
したがって、明確にするために、同じことを行う場合は、foo2 = [1.2, 6.0...]
合計foo1
しfoo2
て取得[2.4, 12.0...]
し、上書きすることができますfoo1
。次に、各行を繰り返し処理して上書きしますfoo1
。もちろん、4kファイルをループする必要があります。
誰かが2つのループや合計演算を手伝ってくれるなら、私は大いに感謝するでしょう。
*更新* 次のコードを使用するようになりました。
foo1=[]
with gzip.open('foo1','r') as f:
skip_header()
for line in f:
foo1.append([float(i) for i in line.strip().split()])
with gzip.open('foo2','r') as f:
skip_header()
for (i, line) in enumerate(f):
foo1[i] = [j + float(k) for (j, k) in zip(foo1[i], line.strip().split())]
これは機能しますが、遅いです。私の入力で約11分。