私はSciPyを使っていくつかの統計を試みていますが、私の入力データセットは非常に大きく(〜1.9GB)、dbf形式です。 genfromtxtで配列を作成しようとすると、Numpyがエラーメッセージを返すほどファイルのサイズが大きくなります。 (私は3GBのRAMを持っていますが、win32を実行しています)。PyTablesまたはPyHDFを介して大きなテキストファイルをhdf5に読み込んでいますか?
すなわち:
Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
ind_sum = numpy.genfromtxt(r"W:\RACER_Analyses\Terrestrial_Heterogeneity\IND_SUM.dbf", dtype = (int, int, int, float, float, int), names = True, usecols = (5))
File "C:\Python26\ArcGIS10.0\lib\site-packages\numpy\lib\npyio.py", line 1335, in genfromtxt
for (i, line) in enumerate(itertools.chain([first_line, ], fhd)):
MemoryError
他の記事から、私はPyTablesが提供するチャンクの配列が有用であることができることを見たが、私の問題は、最初の場所で、このデータに読んでいます。つまり、PyTablesやPyHDFは簡単にHDF5出力を作成することができますが、最初にデータを配列に取り込むにはどうすればよいでしょうか?例えば
:
import numpy, scipy, tables
h5file = tables.openFile(r"W:\RACER_Analyses\Terrestrial_Heterogeneity\HET_IND_SUM2.h5", mode = "w", title = "Diversity Index Results")
group = h5.createGroup("/", "IND_SUM", "Aggregated Index Values"`)
、その後、私は、テーブルや配列を作成することができどちらかが、どのように私は元DBFデータを参照していますか?説明では?
ありがとうございました!
彼の入力ファイルが1.9GBの場合、彼は32ビットOSでそれをmmapすることができず、変換を行うために彼のpythonコードのためのアドレス空間を残しているかもしれません。 – user57368
多くのありがとうございます。あなたが提案するメモリマップされたルートを使って行きます。 あなたの考えを分かち合うために時間を割いていただき、ありがとうございます。私はこれを稼働させるかどうかを知らせますが、まだ私が32ビットOSによって制限されているとはまだ心配しています。私はそれがどうなるか見ていきます。 もう一度ありがとうございます。 – jsnider