h5py使用基础笔记

1、创建/读取数据文件

import h5py
f = h5py.File('test.h5','w') #创建一个名为“test.h5”的h5py文件,文件索引为f
f = h5py.File('test.h5','r') #"r"或"rb"#读取文件

2、group及成员的使用

a1=(1,2,3,4,5)
a2=((2,2),(3,4),(9,7))
data = f.create_group("g1")#创建一个名为g1的组,data是该组的索引
data['k1']=a1  #为g1组添加成员,成员名为k1,并将数组a1的值赋给k1
data['k2']=a2#注意是用“data”而不是“g1”,因为data才是索引
#成员的赋值可以是其它来源的数据,例如从文件中读取的某个属性值等。

输出组中成员的名字和数据的方法有两种:
(1)用组的keys()函数

for key in data.keys():  #注意是"data.keys()"而不是"f.keys()"
    print(data[key].name)
    print(data[key].value)

输出结果:
/g1/k1
[1 2 3 4 5]
/g1/k2
[[2 2]
 [3 4]
 [9 7]]

(2)用组+成员名字

print(f['g1/k1'].name)#注意要加上组的名字,只有成员的名字无法输出
print(f['g1/k1'].value)#成员可以用value输出值,组不能。
print(f['g1/k2'].name)
print(f['g1/k2'].value)

输出结果(和1中结果相同):
/g1/k1
[1 2 3 4 5]
/g1/k2
[[2 2]
 [3 4]
 [9 7]]

3、dataset及使用

group的成员就是dataset,在为组创建成员的时候其实就是在组中创建了不同是数据集。但也可以直接对h5py文件创建数据集。

dataset1=f.create_dataset("d1")

ds1=f.create_dataset("dset1",(5,),'i')#创建一个名为dset1的数据集,形状为(5,),数据类型为int型
#(创建数据集时必须要指定形状,创建组时可以没有)
ds1[...]=a1#赋值方式1:用数据集的索引,
#或者我们可以直接按照下面的方式创建数据集并赋值
f["dset2"]=a2#赋值方式2:用文件索引和数据集名称

输出组中成员的名字和数据的方法有两种:
(1)用数据集的索引来输出数据

print(ds1.value)
print(ds1.name)
# 这种方式下,由于没有为dset2创建索引(如“ds2”),因此无法输出
# 

输出结果:
/dset1
[1 2 3 4 5]

(2)用文件索引和数据集的名字

print(f['dset1'].name)
print(f['dset1'].value)
print(f['dset2'].name)#这种方式可以直接利用数据集的名字来输出数据
print(f['dset2'].value)


输出结果:
/dset1
[1 2 3 4 5]
/dset2
[[2 2]
 [3 4]
 [9 7]]

4、 遍历组内成员

(参考博客:https://blog.csdn.net/yudf2010/article/details/50353292?utm_source=copy )

为了遍历一个group内的所有直接和间接成员,我们可以使用group的visit()和visititerms()方法,这些方法需要接收一个回调函数作为参数。

    def printname(name):
		print name
    f.visit(printname)

输出:
    mydataset
    subgroup
    subgroup/another_dataset
    subgroup2
    subgroup2/dataset_three

其它博客参考:
https://blog.csdn.net/csdn15698845876/article/details/73278120 https://blog.csdn.net/Jasminexjf/article/details/79820413

h5py官方文档:http://docs.h5py.org/en/stable/index.html

你可能感兴趣的:(python)