本文主要是介绍h5py入门讲解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
h5py入门讲解
参考文献:https://blog.csdn.net/ban_xicheng/article/details/80430767
学会h5py可以制作自己的pointnet数据集
h5py简单介绍
h5py文件是存放两类对象的容器,数据集(dataset)和组(group),dataset类似数组类的数据集合,和numpy的数组差不多。group是像文件夹一样的容器,它好比python中的字典,有键(key)和值(value)。group中可以存放dataset或者其他的group。”键”就是组成员的名称,”值”就是组成员对象本身(组或者数据集),下面来看下如何创建组和数据集。==
①创建一个h5py文件
import h5py
#要是读取文件的话,就把w换成r
f=h5py.File("myh5py.hdf5","w")
在当前目录下会生成一个myh5py.hdf5文件
②创建dataset数据集
import h5py
f=h5py.File("myh5py.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)
输出如下:
这里我们仅仅创建了一个存放20个整型元素的数据集,并没有赋值,默认全是0,如何赋值呢,看下面的代码。
import h5py
import numpy as np
f=h5py.File("myh5py.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)
输出如下:
如果我们有现成的numpy数组,那么可以在创建数据集的时候就赋值,这个时候就不必指定数据的类型和形状了,只需要把数组名传给参数data。
import h5py
import numpy as np
f=h5py.File("myh5py.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)
输出如下:
现在把这几种创建的方式混合写下。看下面的代码
import h5py
import numpy as np
f=h5py.File("myh5py.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)
输出如下:
import h5py
import numpy as np
f=h5py.File("myh5py.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)
输出如下:
注意观察数据集dset1和dset2的名字是不是有点和前面的不一样,如果是直接创建的数据集,不在任何组里面,那么它的名字就是/+名字,现在这两个数据集都在bar这个group(组)里面,名字就变成了/bar+/名字,是不是有点文件夹的感觉!继续看下面的代码,你会对group和dataset的关系进一步了解。
import h5py
import numpy as np
f=h5py.File("myh5py.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())
输出如下:
这篇关于h5py入门讲解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!