大佬教程收集整理的这篇文章主要介绍了如何使用 h5py 自动调整 HDF5 数据集的大小?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
有没有办法让 HDF5 数据集从小规模开始,然后自动调整大小以适应添加到其中的越来越多的项目?
我知道使用 h5py 我可以从小处着手并使数据集的大小“无限”,如下所示:
dset = file.create_dataset("my_dataset",(1024,),maxshape=(None,))
但是 AFAIK 我仍然需要 resize()
数据集接近其当前容量(在上面的示例中最初为 1024)。
有没有办法让我不必在我的代码中显式地 resize()
?
简答:不。
我不是底层 HDF5 库的专家,但我认为它们没有这种能力(而 h5py 只是一个包装器)。 (有点)好消息:如果您尝试写入超出分配的大小,h5py 将引发异常。
下面的代码扩展了您的示例以进行演示。
with h5py.File('SO_68389770.h5','w') as h5f:
dset = h5f.create_dataset("my_dataset",(1024,),maxshape=(None,))
size = 100
for i in range(10):
arr = np.random.random(sizE)
start,end = i*size,i*size+size
dset[start:end] = arr
这适用于 range(10)
。您将在 range(11)
中收到此错误:TypeError: Can't broadcast (100,) -> (24,)
下面的代码通过在编写前检查 dset.shape[0]
来干净地处理任何大小。
with h5py.File('SO_68389770.h5',))
size = 100
for i in range(13):
arr = np.random.random(sizE)
start,i*size+size
if Dset.shape[0] >= end :
dset[start:end] = arr
else:
print(f'insufficient dset size,end={enD}; resizing')
dset.resize(end,axis=0)
dset[start:end] = arr
以上是大佬教程为你收集整理的如何使用 h5py 自动调整 HDF5 数据集的大小?全部内容,希望文章能够帮你解决如何使用 h5py 自动调整 HDF5 数据集的大小?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。