1 hdf5格式使用方法
1.1 hdf5文件介紹
一個HDF5文件是一種存放兩類對象的容器:dataset和group. Dataset是類似于數(shù)組的數(shù)據(jù)集,而group是類似文件夾一樣的容器,存放dataset和其他group。在使用h5py的時候需要牢記一句話:groups類比詞典,dataset類比Numpy中的數(shù)組。
HDF5的dataset雖然與Numpy的數(shù)組在接口上很相近,但是支持更多對外透明的存儲特征,如數(shù)據(jù)壓縮,誤差檢測,分塊傳輸。
1.2 hdf5數(shù)據(jù)的創(chuàng)建
由hdf5文件簡介可知道,hdf5文件包含兩部分,group和dataset。很直觀的類比group就是文件夾,dataset就是文件夾里面的數(shù)據(jù),而我們要引用文件夾就好比詞典用法,我們要引用數(shù)據(jù)就好比數(shù)組用法。
創(chuàng)建group和dataset分別為create_group;create_dataset
假設(shè)我們要創(chuàng)建一個名字為subgroup的group,subgroup里面包含一個名為subsub的group和名為data1的數(shù)據(jù);在subsub中包含名為data2的數(shù)據(jù)。示意圖如下
import numpy as np
import h5py
"""
create_dataset :create ?dataset
create_group :create ?group
"""
data1 = np.arange(50)
data2 = np.arange(100)
# h5py.File(filename,’w’) w表示寫入。這句類似 f = h5py.File(‘test.h5’,’w’)
with h5py.File('test.h5','w') as f:
??subgroup = f.create_group('subgroup')
??subgroup.create_dataset('data1',data=data1)
??subsub = subgroup.create_group('subsub')
??subsub.create_dataset('data2',data=data2)
1.3 hdf5數(shù)據(jù)讀取
以1.2中保存的test.h5數(shù)據(jù)作要讀取的數(shù)據(jù)。
1.打開h5文件
import h5py
f = h5py.File('test.h5','r')? # ‘r’ 表示讀取
2.查看h5文件里面結(jié)構(gòu)
def printname(name):
???print(name)
f.visit(prtname)
輸出結(jié)構(gòu)圖如下:
subgroup
subgroup/data1
subgroup/subsub
subgroup/subsub/data2
可以看到subgrop下有數(shù)據(jù)data1
subsub下有數(shù)據(jù)data2
3.取出數(shù)據(jù)
取數(shù)據(jù),例如要取出data1
subgroup = f[‘sobgroup’]
data1 = subgroup[‘data1’]
## 取出data2
subsub = subgroup[‘subsub’]
data2 = subsub[‘data2’]
完整代碼如下:
with h5py.File(filename,'r') as f:
??def prtname(name):
??????print(name)
??f.visit(prtname)
??subgroup = f['subgroup']
??subsub = subgroup['subsub']
??data1 = subgroup['data1']
??data2 = subsub['data2']
??# print(dset)
??print("data1 name:",data1.name,"data2 name",data2.name)
??print("data1 shape:",data1.shape,"data2 shape:",data2.shape)
??print("data1 dtype:",data1.dtype,"data2 dtype:",data2.dtype)
??print("data1:",data1[:],"data2:",data2[:])
————————————————
版權(quán)聲明:本文為CSDN博主「lai_cheng」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/lai_cheng/article/details/84644773