Python实际操作HDF5文档实例
本文关键给大家介绍了Python实际操作HDF5文档实例详细说明,感兴趣的小伙伴可以参考借鉴一下,希望可以有一定的帮助,祝愿大家多多的发展,尽早涨薪 前言 在Matlab操作HDF5文档中早已阐述了HDF5文档早已运用Matlab对它进行操控的方式。本文总的来说怎样在Python下应用HDF5文档。我们依然依照Matl
来源: https://www.ucloud.cn/yun/128839.html 作者: 89542767 发布日期: 发布于2022-12-28 17:03
本文关键给大家介绍了Python实际操作HDF5文档实例详细说明,感兴趣的小伙伴可以参考借鉴一下,希望可以有一定的帮助,祝愿大家多多的发展,尽早涨薪
前言
在Matlab操作HDF5文档中早已阐述了HDF5文档早已运用Matlab对它进行操控的方式。本文总的来说怎样在Python下应用HDF5文档。我们依然依照Matlab操作HDF5文件信息顺序排列,各是建立HDF5文档,载入数据信息,获取数据。
Python中的HDF5文档依靠h5py工具箱
更为关联的两大主要参数为shape和maxshape,很明显我希望数据的某个层面是能够拓展的,因此在maxshape中,将期待拓展的层面标识为None,别的层面和shape主要参数里边的相同。有一点值得关注的是,使用compression='gzip'之后,全部数据能被很大的缩小,对较大的数据十分再用,而且在数据信息读写能力得时候,无需客户显式的编解码。
h5file=h5py.File(filename,'w')
写数据
X=h5file.create_dataset(shape=(0,args.patch_size,args.patch_size),#数据集的维度
maxshape=(None,args.patch_size,args.patch_size),#数据集的允许最大维度
dtype=float,compression='gzip',name='train',#数据类型、是否压缩,以及数据集的名字
chunks=(args.chunk_size,args.patch_size,args.patch_size))#分块存储,每一分块的大小
使用上边的creat_dataset创立了dataset之后,读写能力数据就犹如读写能力numpy二维数组相同便捷,例如上边的函数定义了数据'train',其实就是自变量X之后,能够下边的方法去读写能力:
data=np.zeros((100,args.patch_size,arg))
X[0:100,:,:]=data
在前建立数据得时候,大家界定shape=(args.chunk_size,args.patch_size,args.patch_size),假如拥有更多的数据信息,该怎么办呢?
X.resize(X.shape[0]+args.chunk_size,axis=0)
能使用resize方的方法来拓展在maxshape中界定为None的那一个层面:
读取数据集
h=h5py.File(hd5file,'r')
train=h['train']
train[1]
train[2]
...
载入h5文件信息方式也很简单,最先运用h5py.File方法开启相匹配的h5文档,再将里边某个数据取下至自变量,对于这个自变量的载入就犹如numpy一样。
h=h5py.File(hd5file,'r')
train=h['train']
X=train[0:100]#一次从硬盘中读取比较多的数据,X将存储在内存中
X[1]#从内存中读取
X[2]#从内存中读取
可是上边的载入方式存在一些问题是每一次使用时(train[1],train[2])都要从硬盘读取数据信息,这也会造成载入速度较慢。1个比较靠谱的方法是什么,每一次从硬盘读取一个chunk_size的数据信息,再将这类文件存储到内存条中,在需要时从内存条中载入,例如应用上面的方式:
综上所述,文章就给大家介绍到这里了,希望可以给大家带来帮助。