日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

理解h5文件并使用python对h5格式文件进行读写操作

發(fā)布時(shí)間:2024/1/8 python 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 理解h5文件并使用python对h5格式文件进行读写操作 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

(一)HDF與h5

??HDF(Hierarchical Data Format層次數(shù)據(jù)格式)是一種設(shè)計(jì)用于存儲(chǔ)和組織大量數(shù)據(jù)的文件格式,最開始由美國(guó)國(guó)家超算中心研發(fā),后來由一個(gè)非盈利組織HDF Group支持。HDF支持多種商業(yè)及非商業(yè)的軟件平臺(tái),包括MATLAB、Java、Python、R和Julia等等,現(xiàn)在也提供了Spark。其版本包括了HDF4和現(xiàn)在大量用的HDF5。h5是HDF5文件格式的后綴。h5文件對(duì)于存儲(chǔ)大量數(shù)據(jù)而言擁有極大的優(yōu)勢(shì),這里安利大家多使用h5文件來存儲(chǔ)數(shù)據(jù),既高逼格又高效率。

(二)h5文件數(shù)據(jù)組織方式:像Linux文件系統(tǒng)一樣組織數(shù)據(jù)

?? h5文件中有兩個(gè)核心的概念:組“group”和數(shù)據(jù)集“dataset”。 一個(gè)h5文件就是 “dataset” 和 “group” 二合一的容器。
?? dataset :簡(jiǎn)單來講類似數(shù)組組織形式的數(shù)據(jù)集合,像 numpy 數(shù)組一樣工作,一個(gè)dataset即一個(gè)numpy.ndarray。具體的dataset可以是圖像、表格,甚至是pdf文件和excel。
?? group:包含了其它 dataset(數(shù)組) 和 其它 group ,像字典一樣工作。
?? 一個(gè)h5文件被像linux文件系統(tǒng)一樣被組織起來:dataset是文件,group是文件夾,它下面可以包含多個(gè)文件夾(group)和多個(gè)文件(dataset)。
形象來看h5數(shù)據(jù)組織方式大概像醬嬸兒的,諾!跟文件系統(tǒng)一樣,大概知道它為啥叫層次數(shù)據(jù)格式了吧!

(三)使用python對(duì)h5文件進(jìn)行操作

python對(duì)h5文件的操作依賴于h5py包
通過舉個(gè)栗子來介紹h5py包是如何讀寫h5文件的
讀h5文件:

# Reading h5 file import h5py with h5py.File('cat_dog.h5',"r") as f:for key in f.keys():#print(f[key], key, f[key].name, f[key].value) # 因?yàn)檫@里有g(shù)roup對(duì)象它是沒有value屬性的,故會(huì)異常。另外字符串讀出來是字節(jié)流,需要解碼成字符串。print(f[key], key, f[key].name) # f[key] means a dataset or a group object. f[key].value visits dataset' value,except group object. """ 結(jié)果: <HDF5 group "/dogs" (1 members)> dogs /dogs <HDF5 dataset "list_classes": shape (2,), type "|S7"> list_classes /list_classes <HDF5 dataset "train_set_x": shape (209, 64, 64, 3), type "|u1"> train_set_x /train_set_x <HDF5 dataset "train_set_y": shape (209,), type "<i8"> train_set_y /train_set_y代碼解析: 文件對(duì)象f它表示h5文件的根目錄(root group),前面說了group是按字典的方式工作的,通過f.keys()來找到根目錄下的所有dataset和group的key,然后通過key 來訪問各個(gè)dataset或group對(duì)象。結(jié)果解析: 1.我們可以發(fā)現(xiàn)這個(gè)h5文件下有1個(gè)叫dogs的文件夾(group)和3個(gè)文件(dataset)它們分別叫l(wèi)ist_classes,train_set_x,train_set_y它們的shape都可知。 dogs group下有一個(gè)成員但我們不知道它是group還是dataset。 2.我們可以發(fā)現(xiàn)key和name的區(qū)別: 上層group對(duì)象是通過key來訪問下層dataset或group的而不是通過name來訪問的; 因?yàn)閚ame屬性它是dataset或group的絕對(duì)路徑并非是真正的"name",key才是真正的"name"。 name絕對(duì)路徑:比如下文中訪問name得到:/dogs/husky,它表示根目錄下有dogs這個(gè)掛載點(diǎn),dogs下又掛載了husky。 """ dogs_group = f["dogs"]for key in dogs_group.keys():print(dogs_group[key], dogs_group[key].name) """ 結(jié)果: <HDF5 dataset "husky": shape (64, 64, 3), type "<f8"> /dogs/husky 可見dogs文件夾下有個(gè)key為husky的文件dataset """ from h5py import Dataset, Group, File with File('cat_dog.h5','r') as f:for k in f.keys():if isinstance(f[k], Dataset):print(f[k].value)else:print(f[k].name)

寫h5文件:

# Writing h5import h5py import numpy as np # mode可以是"w",為防止打開一個(gè)已存在的h5文件而清除其數(shù)據(jù),故使用"a"模式 with h5py.File("animals.h5", 'a') as f:f.create_dataset('animals_included',data=np.array(["dogs".encode(),"cats".encode()])) # 根目錄下創(chuàng)建一個(gè)總覽介紹動(dòng)物種類的dataset,字符串應(yīng)當(dāng)字節(jié)化dogs_group = f.create_group("dogs") # 在根目錄下創(chuàng)建gruop文件夾:dogsf.create_dataset('cats',data = np.array(np.random.randn(5,64,64,3))) # 根目錄下有一個(gè)含5張貓圖片的dataset文件dogs_group.create_dataset("husky",data=np.random.randn(64,64,3)) # 在dogs文件夾下分別創(chuàng)建兩個(gè)dataset,一張哈士奇圖片和一張柴犬的圖片dogs_group.create_dataset("shiba",data=np.random.randn(64,64,3))

我們來檢查一下這個(gè)animals.h5文件

with h5py.File('animals.h5','r') as f:for fkey in f.keys():print(f[fkey], fkey)print("======= 優(yōu)雅的分割線 =========")'''結(jié)果:<HDF5 dataset "animals_included": shape (2,), type "|S4"> animals_included<HDF5 dataset "cats": shape (5, 64, 64, 3), type "<f8"> cats<HDF5 group "/dogs" (2 members)> dogs'''dogs_group = f["dogs"] # 從上面的結(jié)果可以發(fā)現(xiàn)根目錄/下有個(gè)dogs的group,所以我們來研究一下它for dkey in dogs_group.keys():print(dkey, dogs_group[dkey], dogs_group[dkey].name, dogs_group[dkey].value)'''husky <HDF5 dataset "husky": shape (64, 64, 3), type "<f8"> /dogs/husky [[[ 6.22221467e-01 2.29412386e-01 1.70099600e-01][-9.53310941e-01 -1.65325168e+00 6.50092663e-02][-2.33444396e-01 5.32328485e-01 -1.23046495e+00]...[-8.27186186e-04 -9.54570238e-01 1.20224835e+00][-3.03556381e-01 5.30470941e-01 -1.49928878e-01][ 5.24641964e-01 -1.55304472e+00 1.30016600e+00]]...'''

更多騷操作可以參考h5py官方文檔。
參考文獻(xiàn):
[1] h5py官方文檔
[2] HDF官網(wǎng)

總結(jié)

以上是生活随笔為你收集整理的理解h5文件并使用python对h5格式文件进行读写操作的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 潘金莲一级淫片aaaaaaa | 久射久| 香蕉在线播放 | 国产精品啪啪啪视频 | av看片在线 | 亚洲综合色成人 | 日韩在线电影一区 | 我爱av好色 | 色偷偷一区二区三区 | 超碰中文字幕在线 | 波多野结衣一区二区 | 男女污污软件 | 91国产中文字幕 | 麻豆911| 五月天婷婷在线观看 | 午夜精品国产精品大乳美女 | 免费福利视频在线观看 | 精品国产一区二区三区噜噜噜 | 国产经典av | 国产精品视频免费观看 | 久久av一区二区三区 | 久色资源 | 亚洲另类在线观看 | 人妻丰满熟妇av无码区 | 日本一区二区视频在线播放 | 成人天堂av | 国产又黄又大又粗视频 | 国产精品一区网站 | 欧美人与动牲交a欧美精品 欧美三级在线看 | 精品一区二区在线观看视频 | 四虎影视永久免费 | 中文字幕在线播放视频 | 中文字幕第66页 | 亚洲s码欧洲m码国产av | 日本一二三不卡 | 亚洲视频一区在线观看 | 97高清国语自产拍 | 日韩午夜免费视频 | 天天伊人网 | 日本福利在线观看 | 日本一区二区三区免费看 | h无码动漫在线观看 | eeuss鲁片一区二区三区在线观看 | 国产乱国产乱老熟300部视频 | 亚洲av成人一区二区 | 久久99精品久久久久久 | 国内自拍偷拍视频 | 黄色片久久久 | 亚洲男人天堂网址 | 久久久午夜电影 | 欧美日韩色图片 | 亚洲国产精品视频一区二区 | 天天干人人干 | 91欧美激情一区二区三区 | 久一精品| 国产黄色自拍 | 99在线看| 99久久久无码国产精品 | 尤物久久 | 亚洲欧洲日本一区二区三区 | 亚洲高清一区二区三区 | 超碰丝袜 | 久久亚洲AV成人无码国产人妖 | 亚洲制服一区二区 | 欧美亚洲一级片 | 国产三级视频在线播放 | 欧美手机在线观看 | 午夜久久视频 | 97视频在线观看免费高清完整版在线观看 | 日日日日操 | 啪啪在线视频 | 日韩精品视频在线观看免费 | 青在线视频 | 国产污视频在线播放 | 一级黄色a视频 | 丰满人妻在公车被猛烈进入电影 | 国产综合av | 成人在线视屏 | 国产3p视频 | 啪啪自拍视频 | 曰本三级日本三级日本三级 | 日韩精品――中文字幕 | 国产精品资源 | 能看的毛片| 日韩中文在线播放 | 精品久久久噜噜噜久久久 | 色呦呦网站 | 国产精品熟女久久久久久 | 国产精品7777777 | 久久免费黄色 | 清纯唯美亚洲综合 | 精品中文字幕在线观看 | www伊人| 国产视频手机在线 | 日本午夜一级 | 亚洲永久在线观看 | 欧美国产中文字幕 | 人妻少妇精品无码专区久久 | 国产999久久久 |