-1

57,600,000百万行の値を含むテキストファイルがあります。これらの値は、テキストファイルの単一の列にあります。これらは、2400回繰り返される150(列)x 160(行)の行列を表します。それぞれ3つの目的を持つ2つの異なる操作を完了したいと思います。

操作1(列)

  1. テキストファイルを開きます
  2. n番目ごとのデータポイントを選択します
  3. 選択した値を別のテキストまたは.csvファイルに保存します

操作2(行)

  1. テキストファイルを開きます
  2. n行ごとから始まる値の範囲(150)を選択します
  3. 選択した値を別のテキストまたは.csvファイルに保存します

これのポイントは、行列の列を印刷してから行を印刷することです。私は初心者のPythonユーザーであり、spyderを使用して他のスクリプトを実行しています。私のためにスクリプトを書いていただければ、希望する結果を得るために何を置き換える必要があるかを説明してください。他の同様の投稿を調べましたが、限られた知識で、自分のニーズに合わせて編集できるほど類似したスレッドを見つけることができません。

ご覧いただき、誠にありがとうございます。

4

1 に答える 1

10

Pythonのファイルはイテレーターです。つまり、ファイルをループしたり、反復操作を適用したりできます。

たとえば、5行ごとに取得するには、次のようになります。

import itertools

with open(filename, 'r') as f:
    fifthlines = itertools.islice(f, 0, None, 5)
    for line in fifthlines:
        # do something with line

islice()行をスキップするためにも使用できます。ここでは、10行をスキップして、10を読み取ります。

for line in itertools.islice(f, 10, 20):
    # do something with this 10th line

シリーズを飲み込むことができます。スキップしてから0行を読み取るとシグナルが発生するため、代わりにデフォルト値を使用して渡すStopIterationことでシグナルを飲み込みます。next()

next(itertools.islice(f, 42, 42), None)  # skip 42 lines, don't read more

itertoolsライブラリを使用し、 Pythonチュートリアルをすばやくスキャンすると、スクリプトの残りの部分を簡単に理解できます。

于 2012-12-15T15:48:46.217 に答える