2

csv ファイルを numpy 配列としてロードしたいと思います。各行には、スペースを含む文字列フィールドが含まれています。numpy で利用可能な loadtxt() メソッドと genfromtxt() メソッドの両方を試しました。デフォルトでは、どちらのメソッドもスペースを区切り文字と見なし、文字列内の各単語を個別の列として区切ります。loadtxt() または genfromtxt() を使用してこの種のデータをロードする方法はありますか、それとも独自のコードを作成する必要がありますか?

私のファイルからのサンプル行:

826##25733##Emanuele Buratti## ##Mammalian cell expression

ここで、## は区切り文字で、スペースは欠損値を表します。

4

2 に答える 2

4

あなたの問題は、デフォルトのコメント文字#が区切り文字と競合していることだと思います。次のようにデータをロードできました。

>>> import numpy as np
>>> np.loadtxt('/tmp/sample.txt', dtype=str, delimiter='##', comments=None)
array(['826', '25733', 'Emanuele Buratti', ' ', 'Mammalian cell expression'], 
      dtype='|S25')

dtype が自動的に最大長の文字列に設定されていることがわかります。dtype=objectそれが面倒なら使えます。余談ですが、データは数値ではないcsvため、この仕事には numpy ではなく module を使用することをお勧めします。

于 2013-05-21T04:05:39.710 に答える