我正在尝试使用 SciPy 进行一些统计,但我的输入数据集非常大(~1.9GB)并且采用 dbf 格式。该文件足够大,以至于当我尝试使用 genfromtxt 创建数组时,Numpy 会返回错误消息。(我有 3GB 内存,但运行的是 win32)。
IE:
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 数据呢?在说明中?
感谢您的任何想法!