<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本文只是簡單的對h5py庫的基本建立檔案,資料集和讀取資料的方式進行介紹!如果讀者需要進一步詳細的學習h5py的更多知識,請參考h5py的官方檔案。
h5py簡單介紹
一個HDF5檔案是一種存放兩類物件的容器:dataset和group. Dataset是類似於陣列的資料集,而group是類似資料夾一樣的容器,它好比python中的字典,有鍵(key)和值(value),存放dataset和其他group。在使用h5py的時候需要牢記一句話:
groups類比字典
,dataset類比Numpy中的陣列
。
HDF5的dataset雖然與Numpy的陣列在介面上很相近,但是支援更多對外透明的
儲存特徵
,如:資料壓縮
,誤差檢測
,分塊傳輸
。
h5py建立的檔案字尾名為:
.hdf5
h5py模組的使用主要分成兩步走:
.hdf5
型別檔案控制程式碼(建立一個物件) # 讀取檔案把“w”改成“r”f=h5py.File("myh5py.hdf5","w")
建立資料(dataset):
f.create_dataset(self, name, shape=None, dtype=None, data=None, **kwds)
建立組(group):
create_group(self, name, track_order=False)
import h5py #要是讀取檔案的話,就把w換成r f=h5py.File("myh5py.hdf5","w")
在當前目錄下會生成一個myh5py.hdf5檔案
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]
這裡我們僅僅建立了一個存放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) 輸出: /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 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]
現在把這幾種建立的方式混合寫下。看下面的程式碼
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] 3. 建立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]]
注意觀察資料集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()) 輸出: ............. /bar1 /bar2 /dset ............. /bar1/car1 /bar1/dset1 ............. /bar2/car2 /bar2/dset2 ............. [] []
Reference:
到此這篇關於python中h5py開源庫的使用的文章就介紹到這了,更多相關python h5py開源庫內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45