文字列のファイルをループして、文字列をnumpy ndarrayにロードするにはどうすればよいですか?
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 リストを作成します。の各行f
はsplit
、スペースを文字列のリストに入れます。- ただし、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 に答える