python - 如何将超大数组保存到许多小文件中?

标签 python numpy filesystems hdf5 pytables

在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 只适用于连续数据类型,而不适用于分块数据类型。

一些相关主题: Chain datasets from multiple HDF5 files/datasets

最佳答案

我会使用 hdf5。在 h5py 中,您可以指定 block 大小,这使得检索数组的小片段变得高效:

http://docs.h5py.org/en/latest/high/dataset.html?#chunked-storage

关于python - 如何将超大数组保存到许多小文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39534246/

相关文章:

python - 使用 numpy 进行图像翻译

javascript - fs 读取错误 : EISDIR: illegal operation on a directory,

java - 如何使用 samba 客户端创建目录

c - 在一个文件夹中写入十亿个文件但出现 "(No space left on device)"错误

Python appengine 查询在使用变量时不起作用

php - 在 PHP 中播种随机数生成器

python - 使用 numpy 和 scipy 在 python 中进行最小二乘估计

python - 寻找使用 numpy 根据出现次数对 3d 数组进行下采样的最快方法

python - Django 脆皮表单将密码显示为明文

python - 向 pandas DataFrame 添加一行列的方法