新西兰服务器

python中h5py开源库怎么使用


python中h5py开源库怎么使用

发布时间:2022-05-19 09:12:36 来源:高防服务器网 阅读:70 作者:iii 栏目:开发技术

这篇文章主要介绍“python中h5py开源库怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“python中h5py开源库怎么使用”文章能帮助大家解决问题。

一、h6py模块介绍

h6py简单介绍

一个HDF5文件是一种存放两类对象的容器:dataset和group. Dataset是类似于数组的数据集,而group是类似文件夹一样的容器,它好比python中的字典,有键(key)和值(value),存放dataset和其他group。在使用h6py的时候需要牢记一句话:groups类比字典dataset类比Numpy中的数组

HDF5的dataset虽然与Numpy的数组在接口上很相近,但是支持更多对外透明的存储特征,如:数据压缩误差检测分块传输

二、h6py模块使用

h6py创建的文件后缀名为:.hdf5

1、h6py接口简单介绍

h6py模块的使用主要分成两步走:

  • 1)创建.hdf5类型文件句柄(创建一个对象) # 读取文件把“w”改成“r”

f=h6py.File("myh6py.hdf5","w")

  • 2)创建数据(dataset)或组(group)

创建数据(dataset):

f.create_dataset(self, name, shape=None, dtype=None, data=None, **kwds)

创建组(group):

create_group(self, name, track_order=False)

2、h6py的使用样例

  • 创建一个h6py文件

import h6py  #要是读取文件的话,就把w换成r  f=h6py.File("myh6py.hdf5","w")

在当前目录下会生成一个myh6py.hdf5文件

  • 创建dataset数据集

import h6py  f=h6py.File("myh6py.hdf5","w")  #deset1是数据集的name,(20,)代表数据集的shape,i代表的是数据集的元素类型  d1=f.create_dataset("dset1", (20,), 'i')  for key in f.keys():      print(key)      print(f[key].name)      print(f[key].shape)      print(f[key].value)  输出:  dset1  /dset1  (20,)  [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]

这里我们仅仅创建了一个存放20个整型元素的数据集,并没有赋值,默认全是0,如何赋值呢,看下面的代码。

import h6py  import numpy as np  f=h6py.File("myh6py.hdf5","w")  d1=f.create_dataset("dset1",(20,),'i')  #赋值  d1[...]=np.arange(20)  #或者我们可以直接按照下面的方式创建数据集并赋值  f["dset2"]=np.arange(15)    for key in f.keys():      print(f[key].name)      print(f[key].value)    输出:  /dset1  [ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19]  /dset2  [ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14]

如果我们有现成的numpy数组,那么可以在创建数据集的时候就赋值,这个时候就不必指定数据的类型和形状了,只需要把数组名传给参数data

import h6py  import numpy as np  f=h6py.File("myh6py.hdf5","w")  a=np.arange(20)  d1=f.create_dataset("dset1",data=a)  for key in f.keys():      print(f[key].name)      print(f[key].value)    输出:  /dset1  [ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19]

现在把这几种创建的方式混合写下。看下面的代码

import h6py  import numpy as np  f=h6py.File("myh6py.hdf5","w")  #分别创建dset1,dset2,dset3这三个数据集  a=np.arange(20)  d1=f.create_dataset("dset1",data=a)  d2=f.create_dataset("dset2",(3,4),'i')  d2[...]=np.arange(12).reshape((3,4))  f["dset3"]=np.arange(15)  for key in f.keys():      print(f[key].name)      print(f[key].value)  输出:  /dset1  [ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19]  /dset2  [[ 0  1  2  3]   [ 4  5  6  7]   [ 8  9 10 11]]  /dset3  [ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14]  3. 创建group组  import h6py  import numpy as np  f=h6py.File("myh6py.hdf5","w")  #创建一个名字为bar的组  g1=f.create_group("bar")  #在bar这个组里面分别创建name为dset1,dset2的数据集并赋值。  g1["dset1"]=np.arange(10)  g1["dset2"]=np.arange(12).reshape((3,4))  for key in g1.keys():      print(g1[key].name)      print(g1[key].value)  输出:  /bar/dset1  [0 1 2 3 4 5 6 7 8 9]  /bar/dset2  [[ 0  1  2  3]   [ 4  5  6  7]   [ 8  9 10 11]]

注意观察数据集dset1和dset2的名字是不是有点和前面的不一样,如果是直接创建的数据集,不在任何组里面,那么它的名字就是/+名字,现在这两个数据集都在bar这个group(组)里面,名字就变成了/bar+/名字,是不是有点文件夹的感觉!继续看下面的代码,你会对group和dataset的关系进一步了解。

import h6py  import numpy as np  f=h6py.File("myh6py.hdf5","w")  #创建组bar1,组bar2,数据集dset  g1=f.create_group("bar1")  g2=f.create_group("bar2")  d=f.create_dataset("dset",data=np.arange(10))  #在bar1组里面创建一个组car1和一个数据集dset1。  c1=g1.create_group("car1")  d1=g1.create_dataset("dset1",data=np.arange(10))  #在bar2组里面创建一个组car2和一个数据集dset2  c2=g2.create_group("car2")  d2=g2.create_dataset("dset2",data=np.arange(10))  #根目录下的组和数据集  print(".............")  for key in f.keys():      print(f[key].name)  #bar1这个组下面的组和数据集  print(".............")  for key in g1.keys():      print(g1[key].name)    #bar2这个组下面的组和数据集  print(".............")  for key in g2.keys():      print(g2[key].name)  #顺便看下car1组和car2组下面都有什么,估计你都猜到了为空。  print(".............")  print(c1.keys())  print(c2.keys())  输出:  .............  /bar1  /bar2  /dset  .............  /bar1/car1  /bar1/dset1  .............  /bar2/car2  /bar2/dset2  .............  []  []

Reference:

1、blog.csdn.net/csdn1569884…

2、blog.csdn.net/yudf2010/ar…

关于“python中h5py开源库怎么使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注高防服务器网行业资讯频道,小编每天都会为大家更新不同的知识点。

[微信提示:高防服务器能助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

[图文来源于网络,不代表本站立场,如有侵权,请联系高防服务器网删除]
[