【发布时间】:2017-01-24 20:17:42
【问题描述】:
在 linux 64bit 环境中,我有非常大的 float64 数组(单个将是 500GB 到 1TB)。我想以统一的方式在 numpy 中访问这些数组:a[x:y]。所以我不想逐个文件地访问数组作为分段文件。有什么工具可以让我在许多不同的文件上创建 memmap? hdf5 或 pytables 可以将单个 CArray 存储到许多小文件中吗?也许类似于 fileInput 的东西?或者我可以对文件系统做些什么来模拟单个文件吗?
在 matlab 中,我一直在使用 H5P.set_external 来执行此操作。然后我可以创建一个原始数据集并将其作为一个大的原始文件进行访问。但我不知道我是否可以在 python 中的这些数据集上创建 numpy.ndarray。或者我可以将单个数据集分布在许多小的 hdf5 文件中吗?
不幸的是,H5P.set_chunk 不适用于 H5P.set_external,因为 set_external 仅适用于连续数据类型而非分块数据类型。
【问题讨论】:
-
您可以使用
numpy.memmap数组,它使用磁盘而不是内存。 Check this Example -
能否将多个文件映射到一个数组中?
-
我知道
memmap可以将多个数组映射到一个文件中,但从未尝试使用多个文件来映射一个数组。使用默认的memmap类可能无法做到这一点
标签: python numpy filesystems hdf5 pytables