文字列を含む2D np-arrayとして大きなテキストファイル(約1 GB、3 * 10^6行と10 - 100列)をロードしたいとします。しかし、numpy.loadtxt()はデフォルトで浮動小数点数をとります。配列全体に別のデータ型を指定することは可能ですか?私は運なしで次のことを試してみた:numpy.loadtxt()を使用してテキストファイルを文字列としてロード
loadedData = np.loadtxt(address, dtype=np.str)
私は、次のエラーメッセージが出ます:
/Library/Python/2.7/site-packages/numpy-1.8.0.dev_20224ea_20121123-py2.7-macosx-10.8-x86_64.egg/numpy/lib/npyio.pyc in loadtxt(fname, dtype, comments, delimiter, converters, skiprows, usecols, unpack, ndmin)
833 fh.close()
834
--> 835 X = np.array(X, dtype)
836 # Multicolumn data are returned with shape (1, N, M), i.e.
837 # (1, 1, M) for a single row - remove the singleton dimension there
ValueError: cannot set an array element with a sequence
任意のアイデア? (私のファイル内の正確な列数は事前にわかりません)
ありがとうございます!それは非常に時間がかかることを除いて、うまく動作します。しかし、私が読んだことから、 'loadtxt'の代わりに' genfromtxt'を使うことが期待されます。物事をスピードアップする方法はありますか?大量のデータをロードするための他の高速な方法はありますか? – user1966176
データセットを何度も繰り返し使用する場合は、生のテキストファイル以外のストレージソリューションを考えることができます。個人的に私はpytablesや別のhd5fソリューションを使っています。 – Hooked
実際には、800Mbのテキストファイルを読み込もうとするとpythonがクラッシュします。それは8GBのRAMと35GBのスワップを使用してメモリをいっぱいにします。 – user1966176