在linux 64位环境中,我有非常大的float64数组(单个数组将是500GB到1TB)。我想以统一的方式访问 numpy 中的这些数组:a[x:y]。所以我不想按文件段的形式访问数组。有没有可以在许多不同文件上创建内存映射的工具? hdf5 或 pytables 可以将单个 CArray 存储到许多小文件中吗?也许类似于 fileInput 的东西?或者我可以对文件系统做一些事情来模拟单个文件吗?
在 matlab 中,我一直使用 H5P.set_external 来执行此操作。然后我可以创建一个原始数据集并将其作为一个大的原始文件进行访问。但我不知道是否可以在 python 中对这些数据集创建 numpy.ndarray 。或者我可以将单个数据集分散到许多小的 hdf5 文件中吗?
不幸的是,H5P.set_chunk 不能与 H5P.set_external 一起使用,因为 set_external 只适用于连续数据类型,而不适用于分块数据类型。
最佳答案
我会使用 hdf5。在 h5py 中,您可以指定 block 大小,这使得检索数组的小片段变得高效:
http://docs.h5py.org/en/latest/high/dataset.html?#chunked-storage
关于python - 如何将超大数组保存到许多小文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39534246/