h5py库
Posted ccpang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了h5py库相关的知识,希望对你有一定的参考价值。
参考文献:http://docs.h5py.org/en/latest/high/dataset.html
h5py文件存放数据集(dataset)和组(group)。
dataset类似数组类的数据集合,和numpy的数组差不多。
group是像文件夹一样的容器,它好比python中的字典,有键(key)和值(value)。group中可以存放dataset或者其他的group。
”键”就是组成员的名称,”值”就是组成员对象本身(组或者数据集).
”键”就是组成员的名称,”值”就是组成员对象本身(组或者数据集).
一、下面来看下如何创建group和dataset
import h5py #如果是读取文件的话,w换成r f = h5py.File("myh5py.hdf5","w");
二、创建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) 输出: dset1 /dset1 (20,) [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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) 输出: /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]
三、将现成的数据集传给参数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) 输出: /dset1 [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19]
四、混合创建数据集dataset
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) 输出: /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]
六、创建group组
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) 输出: /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]]
注意观察:现在这两个数据集都在bar这个group(组)里面,名字就变成了/bar+/名字,是不是有点文件夹的感觉
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()) 输出: ............. /bar1 /bar2 /dset ............. /bar1/car1 /bar1/dset1 ............. /bar2/car2 /bar2/dset2 ............. [] []
八、高级特征
用关键词compression来指定压缩滤波器,而滤波器的可选参数使用关键词compression_opt来指定:
dset = f.create_dataset("zipped", (100, 100), compression="gzip")
以上是关于h5py库的主要内容,如果未能解决你的问题,请参考以下文章
求问大神们,windows下应该怎么安装python的依赖库h5py,leveldb等