python中h5py开源库怎么使用
python中h5py开源库怎么使用
这篇文章主要介绍“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文件
importh6py#要是读取文件的话,就把w换成rf=h6py.File("myh6py.hdf5","w")
在当前目录下会生成一个myh6py.hdf5文件
创建dataset数据集
importh6pyf=h6py.File("myh6py.hdf5","w")#deset1是数据集的name,(20,)代表数据集的shape,i代表的是数据集的元素类型d1=f.create_dataset("dset1",(20,),'i')forkeyinf.keys():print(key)print(f[key].name)print(f[key].shape)print(f[key].value)输出:dset1/dset1(20,)[00000000000000000000]
这里我们仅仅创建了一个存放20个整型元素的数据集,并没有赋值,默认全是0,如何赋值呢,看下面的代码。
importh6pyimportnumpyasnpf=h6py.File("myh6py.hdf5","w")d1=f.create_dataset("dset1",(20,),'i')#赋值d1[...]=np.arange(20)#或者我们可以直接按照下面的方式创建数据集并赋值f["dset2"]=np.arange(15)forkeyinf.keys():print(f[key].name)print(f[key].value)输出:/dset1[012345678910111213141516171819]/dset2[01234567891011121314]
如果我们有现成的numpy数组
,那么可以在创建数据集的时候就赋值,这个时候就不必指定数据的类型和形状了,只需要把数组名传给参数data
。
importh6pyimportnumpyasnpf=h6py.File("myh6py.hdf5","w")a=np.arange(20)d1=f.create_dataset("dset1",data=a)forkeyinf.keys():print(f[key].name)print(f[key].value)输出:/dset1[012345678910111213141516171819]
现在把这几种创建的方式混合写下。看下面的代码
importh6pyimportnumpyasnpf=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)forkeyinf.keys():print(f[key].name)print(f[key].value)输出:/dset1[012345678910111213141516171819]/dset2[[0123][4567][891011]]/dset3[01234567891011121314]3.创建group组importh6pyimportnumpyasnpf=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))forkeying1.keys():print(g1[key].name)print(g1[key].value)输出:/bar/dset1[0123456789]/bar/dset2[[0123][4567][891011]]
注意观察数据集dset1和dset2的名字是不是有点和前面的不一样,如果是直接创建的数据集,不在任何组里面,那么它的名字就是/+名字,现在这两个数据集都在bar这个group(组)里面,名字就变成了/bar+/名字,是不是有点文件夹的感觉!继续看下面的代码,你会对group和dataset的关系进一步了解。
importh6pyimportnumpyasnpf=h6py.File("myh6py.hdf5","w")#创建组bar1,组bar2,数据集dsetg1=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和一个数据集dset2c2=g2.create_group("car2")d2=g2.create_dataset("dset2",data=np.arange(10))#根目录下的组和数据集print(".............")forkeyinf.keys():print(f[key].name)#bar1这个组下面的组和数据集print(".............")forkeying1.keys():print(g1[key].name)#bar2这个组下面的组和数据集print(".............")forkeying2.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开源库怎么使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注恰卡编程网行业资讯频道,小编每天都会为大家更新不同的知识点。
推荐阅读
-
python(中无效的十进制怎么解决 python怎么转换进制)
python怎么转换进制?Python执行二进制转换:1.十进制到二进制(bin)首先,让让我们看看如何将十进制转换成二进制。我...
-
python怎么清除完全相同的行(python splte如何分隔有多个相同符号的str)
pythonsplte如何分隔有多个相同符号的str?str你的string内容str_(相同的符号)执行完了以后再在相同符号的...
-
python(编程控制电脑关机 如何控制电脑关机)
如何控制电脑关机?可以在电脑的运行窗口中输入输入公式,给电脑可以设置自动关机。1.按开快捷键winr然后打开运行窗口。2.在运行窗...
-
python中的特殊标识符(python 中 标识符中可以有逗号吗)
python中标识符中可以有逗号吗?在python语言中合法的标识符是字母、数字以及_,所以我合法的标识符中肯定不能有逗号if...
-
python(excel 提取数据写入新表 python导入excel数据找不到工作簿)
python导入excel数据找不到工作簿?我可以导入数据后找不到工作,不是因为他的工作没有被转移。什么软件可提取并合并Exce...
-
python中字典定义的四种方法(python global关键字的用法详解)
pythonglobal关键字的用法详解?global标志实际上是目的是提示python讲解器,说被其修饰的变量是全局变量。这样...
-
python(array用法 python如何对两个数组做差处理)
python如何对两个数组做差处理?Python中的列表中的元素肯定不能真接相加,减。t最佳的位置的是将列表装换成Python中的...
-
python多行注释符号怎么表示
python多行注释符号怎么表示这篇文章主要介绍“python多行...
-
python支持的操作系统是什么
python支持的操作系统是什么这篇文章主要介绍“python支持...
-
python如何判断列表为空
python如何判断列表为空这篇文章主要介绍“python如何判断...