使用pytables构建一个巨大的numpy数组
我如何使用pytables创建一个巨大的numpy数组。我试过了,但给了我“ ValueError:数组太大。” 错误:
import numpy as np
import tables as tb
ndim = 60000
h5file = tb.openFile('test.h5', mode='w', title="Test Array")
root = h5file.root
h5file.createArray(root, "test", np.zeros((ndim,ndim), dtype=float))
h5file.close()
-
您可以尝试使用table.CArray类,因为它支持压缩,但是…
我认为问题更多是关于numpy而不是pytables,因为您在使用numpy创建数组并将其与pytables存储之前。
这样,您需要大量的内存来执行 np.zeros((ndim,ndim) -这可能是引发异常的地方:“ ValueError:数组太大。”
如果矩阵/数组不密集,则可以使用scipy中可用的稀疏矩阵表示形式:http
://docs.scipy.org/doc/scipy/reference/sparse.html另一个解决方案是尝试在不需要一次整个数组的情况下通过块访问数组-
请检查以下线程:使用Python和NumPy的超大型矩阵