HDF5 文件及Python模塊之h5py

HDF5文件

什麼是HDF5文件呢?先引用一波維基百科的介紹,『層級數據格式(Hierarchical Data Format:HDF)是設計用來存儲和組織大量數據的一組文件格式(HDF4,HDF5)。它最初開發於美國國家超級計算應用中心,如今由非營利社團HDF Group支持,其任務是確保HDF5技術的持續開發和存儲在HDF中數據的持續可訪問性。』。HDF5 擁有一系列的優異特性,使其特別適合進行大量科學數據的存儲和操做,如它支持很是多的數據類型,靈活,通用,跨平臺,可擴展,高效的 I/O 性能,支持幾乎無限量(高達 EB)的單文件存儲等python

如何在Linux中查看hdf5文件呢?數組

h5ls info.h5
# key1    Dataset {10000}
# key2    Dataset {10000,5}
# key3    Dataset {20000,30}

h5py模塊

咱們能夠使用Python很是方便的讀寫hdf5文件,最經常使用的模塊就是h5py。下面說明一下它的安裝及使用方法:bash

安裝模塊性能

pip install h5py
pip install numpy
# numpy 一般是做爲配合使用

這裏引用一個博主對h5py的總結(https://www.jianshu.com/p/de9f33cdfba0):spa

『一個 HDF5 文件是存儲兩類對象的容器,這兩類對象分別爲:設計

dataset:相似數組的數據集合; gropp;相似目錄的容器,其中能夠包含一個或多個 dataset 及其它的 group。code

一個 HDF5 文件從一個命名爲 "/" 的 group 開始,全部的 dataset 和其它 group 都包含在此 group 下,當操做 HDF5 文件時,若是沒有顯式指定 group 的 dataset 都是默認指 "/" 下的 dataset,另外相似相對文件路徑的 group 名字都是相對於 "/" 的。orm

HDF5 文件的 dataset 和 group 均可以擁有描述性的元數據,稱做 attribute。對象

用 h5py 操做 HDF5 文件,咱們能夠像使用目錄同樣使用 group,像使用 numpy 數組同樣使用 dataset,像使用字典同樣使用屬性,很是方便和易用。』ip

寫入hdf5文件

import h5py
import numpy as np

# 若是你要在根group下建立dataset
f = h5py.File('info.h5', 'w')
values1 = np.arange(12).reshape(4, 3)
values2 = np.arange(20).reshape(4, 5)
f.create_dataset(name='key1', data=np.array(values1, dtype='int64'))
f.create_dataset(name='key2', data=np.array(values2, dtype='int64'))

# 若是你要建立一個group(目錄)
# 而後指定dataset放置的group
f.create_group('/dir1')
f.create_group('/dir1/dir2')
data = np.arange(6).reshape(3, 2)
f.create_dataset('/dir1/dir2', data=data)

# 最後別忘了關閉文件
f.close()

讀取hdf5文件

import h5py

with h5py.File(info.h5, 'r') as f:
    values1 = f['key1'].value
    values2 = f['key2'].value
相關文章
相關標籤/搜索