Python实际操作HDF5文档实例

AI 摘要 / TL;DR

本文关键给大家介绍了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的数据信息,再将这类文件存储到内存条中,在需要时从内存条中载入,例如应用上面的方式:

  综上所述,文章就给大家介绍到这里了,希望可以给大家带来帮助。