电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Python存儲讀取HDF5文件代碼解析

瀏覽:112日期:2022-07-04 13:03:41

HDF5 簡介

HDF(Hierarchical Data Format)指一種為存儲和處理大容量科學數(shù)據(jù)設計的文件格式及相應庫文件。HDF 最早由美國國家超級計算應用中心 NCSA 開發(fā),目前在非盈利組織 HDF 小組維護下繼續(xù)發(fā)展。當前流行的版本是 HDF5。HDF5 擁有一系列的優(yōu)異特性,使其特別適合進行大量科學數(shù)據(jù)的存儲和操作,如它支持非常多的數(shù)據(jù)類型,靈活,通用,跨平臺,可擴展,高效的 I/O 性能,支持幾乎無限量(高達 EB)的單文件存儲等,詳見其官方介紹:https://support.hdfgroup.org/HDF5/ 。

HDF5 結構

HDF5 文件一般以 .h5 或者 .hdf5 作為后綴名,需要專門的軟件才能打開預覽文件的內容。HDF5 文件結構中有 2 primary objects: Groups 和 Datasets。

Groups 就類似于文件夾,每個 HDF5 文件其實就是根目錄 (root) group’/’,可以看成目錄的容器,其中可以包含一個或多個 dataset 及其它的 group。

Datasets 類似于 NumPy 中的數(shù)組 array,可以當作數(shù)組的數(shù)據(jù)集合 。

每個 dataset 可以分成兩部分: 原始數(shù)據(jù) (raw) data values 和 元數(shù)據(jù) metadata (a set of data that describes and gives information about other data => raw data)。

+-- Dataset| +-- (Raw) Data Values (eg: a 4 x 5 x 6 matrix)| +-- Metadata| | +-- Dataspace (eg: Rank = 3, Dimensions = {4, 5, 6})| | +-- Datatype (eg: Integer)| | +-- Properties (eg: Chuncked, Compressed)| | +-- Attributes (eg: attr1 = 32.4, attr2 = 'hello', ...)|

從上面的結構中可以看出:

Dataspace 給出原始數(shù)據(jù)的秩 (Rank) 和維度 (dimension) Datatype 給出數(shù)據(jù)類型 Properties 說明該 dataset 的分塊儲存以及壓縮情況 Chunked: Better access time for subsets; extendible Chunked & Compressed: Improves storage efficiency, transmission speed Attributes 為該 dataset 的其他自定義屬性

整個 HDF5 文件的結構如下所示:

+-- /| +-- group_1| | +-- dataset_1_1| | | +-- attribute_1_1_1| | | +-- attribute_1_1_2| | | +-- ...| | || | +-- dataset_1_2| | | +-- attribute_1_2_1| | | +-- attribute_1_2_2| | | +-- ...| | || | +-- ...| || +-- group_2| | +-- dataset_2_1| | | +-- attribute_2_1_1| | | +-- attribute_2_1_2| | | +-- ...| | || | +-- dataset_2_2| | | +-- attribute_2_2_1| | | +-- attribute_2_2_2| | | +-- ...| | || | +-- ...| || +-- ...|

一個 HDF5 文件從一個命名為 '/' 的 group 開始,所有的 dataset 和其它 group 都包含在此 group 下,當操作 HDF5 文件時,如果沒有顯式指定 group 的 dataset 都是默認指 '/' 下的 dataset,另外類似相對文件路徑的 group 名字都是相對于 '/' 的。

安裝

pip install h5py

Python讀寫HDF5文件

#!/usr/bin/python# -*- coding: UTF-8 -*-## Created by WW on Jan. 26, 2020# All rights reserved.#import h5pyimport numpy as npdef main(): #=========================================================================== # Create a HDF5 file. f = h5py.File('h5py_example.hdf5', 'w') # mode = {’w’, ’r’, ’a’} # Create two groups under root ’/’. g1 = f.create_group('bar1') g2 = f.create_group('bar2') # Create a dataset under root ’/’. d = f.create_dataset('dset', data=np.arange(16).reshape([4, 4])) # Add two attributes to dataset ’dset’ d.attrs['myAttr1'] = [100, 200] d.attrs['myAttr2'] = 'Hello, world!' # Create a group and a dataset under group 'bar1'. c1 = g1.create_group('car1') d1 = g1.create_dataset('dset1', data=np.arange(10)) # Create a group and a dataset under group 'bar2'. c2 = g2.create_group('car2') d2 = g2.create_dataset('dset2', data=np.arange(10)) # Save and exit the file. f.close() ’’’ h5py_example.hdf5 file structure +-- ’/’ | +-- group 'bar1' | | +-- group 'car1' | | | +-- None | | | | | +-- dataset 'dset1' | | | +-- group 'bar2' | | +-- group 'car2' | | | +-- None | | | | | +-- dataset 'dset2' | | | +-- dataset 'dset' | | +-- attribute 'myAttr1' | | +-- attribute 'myAttr2' | | | ’’’ #=========================================================================== # Read HDF5 file. f = h5py.File('h5py_example.hdf5', 'r') # mode = {’w’, ’r’, ’a’} # Print the keys of groups and datasets under ’/’. print(f.filename, ':') print([key for key in f.keys()], 'n') #=================================================== # Read dataset ’dset’ under ’/’. d = f['dset'] # Print the data of ’dset’. print(d.name, ':') print(d[:]) # Print the attributes of dataset ’dset’. for key in d.attrs.keys(): print(key, ':', d.attrs[key]) print() #=================================================== # Read group ’bar1’. g = f['bar1'] # Print the keys of groups and datasets under group ’bar1’. print([key for key in g.keys()]) # Three methods to print the data of ’dset1’. print(f['/bar1/dset1'][:]) # 1. absolute path print(f['bar1']['dset1'][:]) # 2. relative path: file[][] print(g[’dset1’][:]) # 3. relative path: group[] # Delete a database. # Notice: the mode should be ’a’ when you read a file. ’’’ del g['dset1'] ’’’ # Save and exit the file f.close()if __name__ == '__main__': main()

相關代碼示例

創(chuàng)建一個h5py文件

import h5pyf=h5py.File('myh5py.hdf5','w')

創(chuàng)建dataset

import h5pyf=h5py.File('myh5py.hdf5','w')#deset1是數(shù)據(jù)集的name,(20,)代表數(shù)據(jù)集的shape,i代表的是數(shù)據(jù)集的元素類型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]

賦值

import h5pyimport numpy as npf=h5py.File('myh5py.hdf5','w')d1=f.create_dataset('dset1',(20,),’i’)#賦值d1[...]=np.arange(20)#或者我們可以直接按照下面的方式創(chuàng)建數(shù)據(jù)集并賦值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]

創(chuàng)建group

import h5pyimport numpy as npf=h5py.File('myh5py.hdf5','w')#創(chuàng)建一個名字為bar的組g1=f.create_group('bar')#在bar這個組里面分別創(chuàng)建name為dset1,dset2的數(shù)據(jù)集并賦值。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]]

刪除某個key下的數(shù)據(jù)

# 刪除某個key,調用removef.remove('bar')

最后pandsa讀取HDF5格式文件

import pandas as pdimport numpy as np# 將mode改成r即可hdf5 = pd.HDFStore('hello.h5', mode='r')# 或者'''hdfs = pd.read_hdf('hello.h5', key='xxx')'''

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 泵阀展|阀门展|水泵展|流体机械展 -2025上海国际泵管阀展览会flowtech china | 电动高尔夫球车|电动观光车|电动巡逻车|电动越野车厂家-绿友机械集团股份有限公司 | 云南丰泰挖掘机修理厂-挖掘机维修,翻新,再制造的大型企业-云南丰泰工程机械维修有限公司 | 发电机组|柴油发电机组-批发,上柴,玉柴,潍柴,康明斯柴油发电机厂家直销 | 皮带输送机-大倾角皮带输送机-皮带输送机厂家-河南坤威机械 | 培训中心-翰香原香酥板栗饼加盟店总部-正宗板栗酥饼技术 | 锡膏喷印机-全自动涂覆机厂家-全自动点胶机-视觉点胶机-深圳市博明智控科技有限公司 | 光泽度计_测量显微镜_苏州压力仪_苏州扭力板手维修-苏州日升精密仪器有限公司 | 高效节能电机_伺服主轴电机_铜转子电机_交流感应伺服电机_图片_型号_江苏智马科技有限公司 | 多物理场仿真软件_电磁仿真软件_EDA多物理场仿真软件 - 裕兴木兰 | 紫外荧光硫分析仪-硫含量分析仪-红外光度测定仪-泰州美旭仪器 | 东莞市超赞电子科技有限公司 全系列直插/贴片铝电解电容,电解电容,电容器 | 微信小程序定制,广州app公众号商城网站开发公司-广东锋火 | 派克防爆伺服电机品牌|国产防爆伺服电机|高低温伺服电机|杭州摩森机电科技有限公司 | 乙炔气体报警装置|固定式氯化氢检测仪|河南驰诚电气百科 | 干培两用箱-细菌恒温培养箱-菲斯福仪器 | 原色会计-合肥注册公司_合肥代理记账公司_营业执照代办 | 北京亦庄厂房出租_经开区产业园招商信息平台 | 南溪在线-南溪招聘找工作、找房子、找对象,南溪综合生活信息门户! | 电动葫芦|环链电动葫芦-北京凌鹰名优起重葫芦 | 心肺复苏模拟人|医学模型|急救护理模型|医学教学模型上海康人医学仪器设备有限公司 | 电伴热系统施工_仪表电伴热保温箱厂家_沃安电伴热管缆工业技术(济南)有限公司 | 铝板冲孔网,不锈钢冲孔网,圆孔冲孔网板,鳄鱼嘴-鱼眼防滑板,盾构走道板-江拓数控冲孔网厂-河北江拓丝网有限公司 | 防潮防水通风密闭门源头实力厂家 - 北京酷思帝克门窗 | 北京遮阳网-防尘盖土网-盖土草坪-迷彩网-防尘网生产厂家-京兴科技 | 芝麻黑-芝麻黑石材厂家-永峰石业 | 东亚液氮罐-液氮生物容器-乐山市东亚机电工贸有限公司 | 武汉高温老化房,恒温恒湿试验箱,冷热冲击试验箱-武汉安德信检测设备有限公司 | 济南展厅设计施工_数字化展厅策划设计施工公司_山东锐尚文化传播有限公司 | 深圳快餐店设计-餐饮设计公司-餐饮空间品牌全案设计-深圳市勤蜂装饰工程 | 自动化生产线-自动化装配线-直流电机自动化生产线-东莞市慧百自动化有限公司 | 矿用履带式平板车|探水钻机|气动架柱式钻机|架柱式液压回转钻机|履带式钻机-启睿探水钻机厂家 | 滚塑PE壳体-PE塑料浮球-警示PE浮筒-宁波君益塑业有限公司 | 医院专用门厂家报价-医用病房门尺寸大全-抗菌木门品牌推荐 | 台湾HIWIN上银直线模组|导轨滑块|TBI滚珠丝杆丝杠-深圳汉工 | AGV叉车|无人叉车|AGV智能叉车|AGV搬运车-江西丹巴赫机器人股份有限公司 | 谷歌关键词优化-外贸网站优化-Google SEO小语种推广-思亿欧外贸快车 | 防水套管厂家_刚性防水套管_柔性防水套管_不锈钢防水套管-郑州中泰管道 | 楼承板-开闭口楼承板-无锡海逵楼承板| 深圳快餐店设计-餐饮设计公司-餐饮空间品牌全案设计-深圳市勤蜂装饰工程 | 卫生纸复卷机|抽纸机|卫生纸加工设备|做卫生纸机器|小型卫生纸加工需要什么设备|卫生纸机器设备多少钱一台|许昌恒源纸品机械有限公司 |