尝试在h5py中扩展现有数据集时出错:ValueError:无法设置扩展数据集(Dimension不能超过现有的最大大小

时间:2017-07-25 19:18:58

标签: python hdf5 h5py

我正在尝试在h5py中创建可调整大小的数据集。它应该是一个简单的一维数组,其中写有一些初始值,然后在可用时使用其他值进行更新。当我尝试这个时:

ds = g2.create_dataset(wf, maxshape=(None), chunks=True, data=values)
size = ds.shape[0] + len(values)
ds.resize(size, axis=0)

我收到此错误:

  

ValueError:无法设置扩展数据集(Dimension不能超过现有的最大大小(new:120 max:60))

但是,似乎提供数据或设置形状会覆盖maxshape并且数据集不会调整大小,并显示当前最大形状是最初在shape属性中提供或设置的数据的消息。

根据h5py documentation,这正是应该如何完成的,并且将maxshape设置为None应该提供无限扩展,而将块设置为True应该启用自动块大小确定。

我也试过这样的事情,并分别添加数据:

ds = g2.create_dataset(wf,(100,), maxshape=(None), chunks=True, dtype='i')

它会抛出同样的错误,到现在为止我不确定我是否设置了错误的尺寸,或者它是否与数据类型或形状有任何关系。

1 个答案:

答案 0 :(得分:0)

我唯一不同的是使用(None,)形状,而不是(None);这是确保我给它一个元组形状。我没有逗号就试过了。

In [177]: f=h5py.File('test1.h5','w')
In [178]: ds = f.create_dataset('name', maxshape=(None,), chunks=True, data=np.arange(10))
In [179]: ds.shape
Out[179]: (10,)
In [180]: ds.resize((20,))
In [181]: ds[:]
Out[181]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
In [182]: ds[10:]=np.arange(10,20)
In [183]: ds[:]
Out[183]: 
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
       17, 18, 19])

maxshape必须是元组。 resize不适用于(None)