5

私はnumpyでpythonを使用して、かなり複雑な形式のテキストファイルの数値モデルからデータを読み込みます。

Numpy の genfromtxt および fromfile 関数はうまく機能しますが、データが構造化されている場合のみです。私のデータファイルは次のようになります。

- - - をちょきちょきと切る

[sitename] [dimemsion 1 size] [dimension 2 size]
[data for dim 1]
[data for dim 2]
[date/time]
[header data]
[data (dim1 * dim2)]
[header]
[data]
...
.  
.   
[data/time]
[header]
[data]
.
.
etc...

- - をちょきちょきと切る

そのため、テキストと数字が混在し、複雑な (ただし繰り返し) レイアウトがあります。numpy を使用してこれを読み取る最良の方法は?

乾杯、

クリス

4

2 に答える 2

6

Numpy は一般化された解析が得意ではないため、それを超えて検討することをお勧めします。何を選択するかは、主にファイルの一貫性に依存します。

それらが非常に一貫している場合、つまり、既知の位置と既知の行から数値を抽出するだけで、ファイルを行ごとに文字列として読み取り、これを必要な文字にインデックス付けすることができます。(たとえば、file.readlines を使用して各行を文字列として取得するなど、ファイルをステップ実行します。)

通常のケース(少なくとも私が見つけたもの)は、上記よりも多様ですが、string.split(ほとんどの場合、私の最初のステップです)などの単純な文字列操作を使用して行を解析できます.

これ以外にも、Python には多くの解析ライブラリがあります。私はpyparsingが好きです (しかし、私は他のものをよく知らないので、公平な比較にはなりません)。さまざまな解析ライブラリの概要を次に示します。

于 2012-04-12T23:06:34.683 に答える
1

前の回答に同意します。次の一連の手順が最適に機能し、pyparse やnumpy.genfromtxt

inp = open(textfilename).readlines()
my_list = []
for line in inp:
    item = str.split(line)
    my_list.append(float(item[0]))

次に、リストをnumpy配列/行列に簡単に変換して、そこから続行できます

于 2012-04-17T14:59:30.687 に答える