0

文字列のファイルをループして、文字列をnumpy ndarrayにロードするにはどうすればよいですか?

4

1 に答える 1

2

これにより、セルごとに行を持つ文字列の numpy ベクトルが作成されます。

import numpy as np

with open("file.ext") as f:
    a = np.array(f.readlines())

これは、たとえば、浮動小数点のスペースで区切られた値のファイル用に変更できます。

import numpy as np

with open("file.ext") as f:
    a = np.array([map(float, line.split()) for line in f])

array()ここで何が起こっているのかを明確にするために、 への議論を分解してみましょう。

  • [line for line in f]と同等ですf.readlines()- 文字列のリストを 1 行に 1 つずつ作成しますf
  • [line.split() for line in f]文字列の 2D リストを作成します。の各行fsplit 、スペースを文字列のリストに入れます。
  • ただし、Numpy は文字列ではなく数値を処理するように設計されています。したがって、文字列の各サブリストを float のリストに変換する必要があります。mapは、リストのすべての要素 (floatこの場合) に同じ関数を適用するためmap(float, line.split())、文字列のリストを float のリストに変換します。
  • したがって[map(float, line.split()) for line in f]、float のリストのリストが作成されます。1 行に 1 つのリストで、float はスペースで分割されています。array()これは、リストのリストを処理する方法を知っているに送信されます。

Numpy 関数のgenfromtxtおよびloadtxtファミリーも調べてください。

于 2013-03-09T22:01:33.043 に答える