在python中更改巨大的HDF5数组的数据类型

问题描述 投票:0回答:1

我有4个HDF5文件,每个文件的大小约为15GB。每个格式均为N_i x 2048 x 7 x7。每个格式均为float64格式。我想将它们合并为float32类型的单个N x 2048 x 7 x 7数据集。我已经阅读了h5py文档,并且知道不能更改数据集的数据类型。

所以我唯一的想法是

  1. 将所有文件转换为numpy数组。
  2. 合并数组。
  3. 从float64转换为float32。
  4. 创建新数据集。

这种方法的明显问题是我只有32GB的RAM,无法将这些阵列装入内存。如何绕过这些限制?

python large-files hdf
1个回答
0
投票

首先,我同意,尝试将它们加载为numpy,然后更改dtype以获取一些内存。

import numpy as np
import h5py

hf = h5py.File('file.h5', 'r')
n1 = np.array(hf["dataset_name"][:])

print(n1)

如您所描述,在第3步之后,如果系统内存不足,则没有解决办法如果您想一次加载所有内容。您将需要找到一台具有足够内存来执行此任务的机器。

© www.soinside.com 2019 - 2024. All rights reserved.