HDF5數(shù)據(jù)格式讀寫

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • pyspark.sql模塊 模塊上下文 Spark SQL和DataFrames的重要類: pyspark.sql...
    mpro閱讀 9,920評論 0 13
  • 在上一篇中我們介紹了 caput 中另一個模塊 miarray 提供的建立在 numpy array 基礎(chǔ)上的并行...
    自可樂閱讀 61,029評論 6 21
  • h5py是Python語言用來操作HDF5的模塊。下面的文章主要介紹h5py的快速入門指南,翻譯自h5py的官方文...
    山陰少年閱讀 13,578評論 0 1
  • 在上一篇中我們介紹了利用 mpi4py 和 h5py 進(jìn)行并行分布式的 HDF5 文件操作,下面我們將介紹 cap...
    自可樂閱讀 1,098評論 0 0
  • Spark學(xué)習(xí)筆記 Data Source->Kafka->Spark Streaming->Parquet->S...
    哎喲喂嘍閱讀 6,844評論 0 51

友情鏈接更多精彩內(nèi)容