您好,登錄后才能下訂單哦!
這篇文章主要介紹“python中h5py開源庫怎么使用”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“python中h5py開源庫怎么使用”文章能幫助大家解決問題。
h6py簡單介紹
一個HDF5文件是一種存放兩類對象的容器:dataset和group. Dataset是類似于數組的數據集,而group是類似文件夾一樣的容器,它好比python中的字典,有鍵(key)和值(value),存放dataset和其他group。在使用h6py的時候需要牢記一句話:
groups類比字典
,dataset類比Numpy中的數組
。
HDF5的dataset雖然與Numpy的數組在接口上很相近,但是支持更多對外透明的
存儲特征
,如:數據壓縮
,誤差檢測
,分塊傳輸
。
h6py創建的文件后綴名為:
.hdf5
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)
創建一個h6py文件
import h6py #要是讀取文件的話,就把w換成r f=h6py.File("myh6py.hdf5","w")
在當前目錄下會生成一個myh6py.hdf5文件
創建dataset數據集
import h6py f=h6py.File("myh6py.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]
這里我們僅僅創建了一個存放20個整型元素的數據集,并沒有賦值,默認全是0,如何賦值呢,看下面的代碼。
import h6py import numpy as np f=h6py.File("myh6py.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]
如果我們有現成的numpy數組
,那么可以在創建數據集的時候就賦值,這個時候就不必指定數據的類型和形狀了,只需要把數組名傳給參數data
。
import h6py import numpy as np f=h6py.File("myh6py.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]
現在把這幾種創建的方式混合寫下。看下面的代碼
import h6py import numpy as np f=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) 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] 3. 創建group組 import h6py import numpy as np f=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)) 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]]
注意觀察數據集dset1和dset2的名字是不是有點和前面的不一樣,如果是直接創建的數據集,不在任何組里面,那么它的名字就是/+名字,現在這兩個數據集都在bar這個group(組)里面,名字就變成了/bar+/名字,是不是有點文件夾的感覺!繼續看下面的代碼,你會對group和dataset的關系進一步了解。
import h6py import numpy as np f=h6py.File("myh6py.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 ............. [] []
Reference:
1、blog.csdn.net/csdn1569884…
2、blog.csdn.net/yudf2010/ar…
關于“python中h5py開源庫怎么使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。