更新h5py数据集

Geo*_*net 13 python hdf5 h5py

有没有人想从h5py更新hdf5数据集?假设我们创建了一个数据集,如:

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")
Run Code Online (Sandbox Code Playgroud)

是否可以将dset扩展为3x3 numpy阵列?

Yos*_*ian 14

您需要使用"extendedable"属性创建数据集.在初始创建数据集后无法更改此设置.为此,您需要使用"maxshape"关键字.元组None中的值maxshape意味着该维度可以是无限大小.那么,如果f是HDF5文件:

dset = f.create_dataset('mydataset', (2,2), maxshape=(None,3))
Run Code Online (Sandbox Code Playgroud)

创建一个大小为(2,2)的数据集,该数据集可以沿第一维无限延伸,沿第二维延伸3.现在,您可以使用以下内容扩展数据集resize:

dset.resize((3,3))
dset[:,:] = np.zeros((3,3),"=i4")
Run Code Online (Sandbox Code Playgroud)

第一个维度可以随意增加:

dset.resize((10,3))
Run Code Online (Sandbox Code Playgroud)

  • resize也接受一个axis参数,所以你只需要为你正在扩展的轴指定新的大小,而不是全部:dset.resize(10,axis = 0) (5认同)