【发布时间】:2020-03-20 17:39:46
【问题描述】:
我有 4 个 HDF5 文件,每个文件大小约为 15GB。每个都采用 N_i x 2048 x 7 x 7 的形式。每个都是 float64 格式。我想将它们合并到一个 float32 类型的 N x 2048 x 7 x 7 数据集。我已经阅读了 h5py 文档并且知道数据集的数据类型无法更改。
所以我唯一的想法就是
- 将所有文件转换为 numpy 数组。
- 合并数组。
- 从 float64 转换为 float32。
- 创建新数据集。
这种方法的明显问题是我只有 32GB 的 RAM,而且我无法将这些数组放入内存中。如何绕过这些限制?
【问题讨论】:
-
你能不能一次只处理 1% 的数组,完成这项工作,写入 hdf5 文件,丢弃 1%,进入下一部分?
-
理论上我可以做到这一点,你有关于我将如何实施的指示吗?我对 h5py 库的了解是初级的。
-
我也不知道,但我认为将较小的数据集附加到现有文件(阅读this question)是绝对可行的,因此您应该能够初始化文件并在使用数组时进行扩展你去的部分。
标签: python large-files hdf