14

Does any one have an idea for updating hdf5 datasets from h5py? Assuming we create a dataset like:

import h5py
import numpy
f = h5py.File('myfile.hdf5')
dset = f.create_dataset('mydataset', data=numpy.ones((2,2),"=i4"))
new_dset_value=numpy.zeros((3,3),"=i4")

Is it possible to extend the dset to a 3x3 numpy array?

4

1 回答 1

16

您需要使用“可扩展”属性创建数据集。在初始创建数据集后无法更改此设置。为此,您需要使用“maxshape”关键字None元组中的值maxshape表示该维度可以是无限大小。因此,如果f是 HDF5 文件:

dset = f.create_dataset('mydataset', (2,2), maxshape=(None,3))

创建一个大小为 (2,2) 的数据集,该数据集可以沿第一个维度无限扩展,沿第二个维度扩展至 3。现在,您可以使用以下方法扩展数据集resize

dset.resize((3,3))
dset[:,:] = np.zeros((3,3),"=i4")

第一个维度可以随心所欲地增加:

dset.resize((10,3))
于 2013-04-25T13:19:59.353 回答