python 桌面应用 h5_hdf 5文件格式及python中利用h5py模块读写h5文件
HDF格式可以被看成一本帶目錄的多章節(jié)書。HDF文件作為“數(shù)據書”,每一章包含不同類型的數(shù)據元素。HDF文件用“數(shù)據目錄”列出數(shù)據元素。
一個HDF 文件應包括一個文件頭,一個或多個描述符塊,若干個數(shù)據元素。
數(shù)據頭是用來確定一個文件是否為HDF文件,描述符塊存有數(shù)據描述符的序號。一個數(shù)據描述符和數(shù)據元素一起組成了數(shù)據對象。數(shù)據對象是HDF 的基本結構。
文件頭:
文件頭占用文件的前4個字節(jié),它由4個ASCII碼形式的控制字符組成,每個字符占用一個字節(jié)。第一個控制字符是‘N’,第二個是‘C’, 第三個是‘S’,第四為‘A’,即(^N^C^S^A).
數(shù)據對象:
一個數(shù)據對象是由一個數(shù)據描述符和一個數(shù)據元素組成。數(shù)據描述符包含了數(shù)據元素的類型、位置、尺度等信息。數(shù)據元素是實際的數(shù)據資料。HDF 這種數(shù)據組織方式可以實現(xiàn)HDF 數(shù)據的自我描述。
(1) 數(shù)據描述符
所有的數(shù)據描述符都為12個字節(jié)長,它包含4個區(qū)域:標識符(占16-bit),參照數(shù)(16-bit),數(shù)據偏移量(32-bit),數(shù)據長度(32-bit)。
標識符:
數(shù)據標識符(tag)是用來確定數(shù)據元素區(qū)數(shù)據類型的。它是16位無符號整型值(1~65535),如果沒有與其相對應的數(shù)據元素,則tag為DFTGA_NULL(或0)。下面為tag的值的說明:
1~32767——HDF 結構專用
32768~64999——可由用戶定義
65000~65535——HDF 規(guī)格擴展使用
參照數(shù):
對于HDF 文件中的每個標記符,都有唯一的一個參照數(shù)與其相對應。參照數(shù)是一個16—bit無符號整型數(shù),在數(shù)據對象中一般是不可變的。標記符和參照數(shù)相結合確定唯一的數(shù)據對象。
數(shù)據偏移量和長度:
數(shù)據偏移量是指從文件開始位置到數(shù)據元素的起始位置所包含的字節(jié)數(shù)。長度是指整個數(shù)據元素區(qū)占用字節(jié)數(shù)。數(shù)據偏移量和長度均為32-bit 無符號整型數(shù)。
(2) 數(shù)據元素
數(shù)據元素是數(shù)據對象中的裸數(shù)據部分。
(3) 在HDF 文件中將數(shù)據對象分組
在HDF 文件中通常將含有相關數(shù)據的數(shù)據對象分為一組。這些數(shù)據對象組稱為數(shù)據集。HDF 用戶采用應用界面來處理這些數(shù)據集。例如:一套8-bit的圖像數(shù)據集一般有3個數(shù)據對象:一組對象用來描述數(shù)據集的成員,一組對象是圖像數(shù)據,另一組對象則用來描述圖像的尺度大小。一個數(shù)據對象可以同時屬于多個數(shù)據集,例如包含在一個柵格圖像中的調色板對象,如果它的標識號和參照值也同時包含在另一個數(shù)據集描述符中,那么則可以被另一個柵格圖像調用。
python的代碼讀寫實現(xiàn):
#-*- coding: utf-8 -*-
importh5pyimportnumpy as np#HDF5的寫入:
imgData = np.zeros((2,4))
f= h5py.File('HDF5_FILE.h5','w') #創(chuàng)建一個h5文件,文件指針是f
f['data'] = imgData #將數(shù)據寫入文件的主鍵data下面
f['labels'] = np.array([1,2,3,4,5]) #將數(shù)據寫入文件的主鍵labels下面
f.close() #關閉文件
#HDF5的讀取:
f = h5py.File('HDF5_FILE.h5','r') #打開h5文件#可以查看所有的主鍵
for key inf.keys():print(f[key].name)print(f[key].shape)print(f[key].value)
總結
以上是生活随笔為你收集整理的python 桌面应用 h5_hdf 5文件格式及python中利用h5py模块读写h5文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 记一次Exception in thre
- 下一篇: 22. 协程与Python中的多任务异步