Python操作HDF5檔案示例詳解
導讀 | 這篇文章主要為大家介紹了Python操作HDF5檔案示例詳解,有需要的朋友可以借鑑參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪 |
在Matlab操作HDF5檔案中已經詳細介紹了HDF5檔案已經利用Matlab對其進行操作的方法。這篇文章總結一下如何在Python下使用HDF5檔案。我們仍然按照Matlab操作HDF5檔案的順序進行,分別是建立HDF5檔案,寫入資料,讀取資料。
Python下的HDF5檔案依賴h5py工具包
使用`h5py.File()方法建立hdf5檔案
h5file = h5py.File(filename,'w')
然後在此基礎上建立資料集
X = h5file.create_dataset(shape=(0,args.patch_size,args.patch_size), #資料集的維度 maxshape = (None,args.patch_size,args.patch_size), #資料集的允許最大維度 dtype=float,compression='gzip',name='train', #資料型別、是否壓縮,以及資料集的名字 chunks=(args.chunk_size,args.patch_size,args.patch_size)) #分塊儲存,每一分塊的大小
最為關係的兩個引數為shape和maxshape,很顯然我們希望資料集的某一個維度是可以擴充套件的,所以在maxshape中,將希望擴充套件的維度標記為None,其他維度和shape引數裡面的一樣。還有一點值得注意的是,使用compression='gzip'以後,整個資料集能夠被極大的壓縮,對比較大的資料集非常又用,並且在資料讀寫的時候,不用使用者顯式的解碼。
在使用上面的creat_dataset建立了dataset以後,讀寫資料集就如同讀寫numpy陣列一樣方便,比如上面的函式定義了資料集'train',也就是變數X以後,可以下面的方法來讀寫:
data = np.zeros((100,args.patch_size,arg)) X[0:100,:,:] = data
在前面建立資料集的時候,我們定義shape = (args.chunk_size,args.patch_size,args.patch_size),如果有更多的資料,怎麼辦呢?
可以使用resize方法來擴充套件在maxshape中定義為None的那個維度:
X.resize(X.shape[0]+args.chunk_size,axis=0)
因為我們在maxshape=(None,args.patch_size,args.patch_size)中將第零個維度定義為可擴充套件,所以,首先我們用X.shape[0]來找到該維度的長度,並將其擴充套件。該維度擴充套件以後,就可以繼續向裡面寫入資料了。
讀取h5檔案的方法也非常簡單,首先利用h5py.File方法開啟對應的h5檔案,然後將裡面的某個資料集取出至變數,對這個變數的讀取就如同numpy一樣了。
h = h5py.File(hd5file,'r') train = h['train'] train[1] train[2] ...
但是上面的讀取方法存在一個問題就是每一次使用的時候(train[1],train[2])都需要從硬碟讀取資料,這將會導致讀取的速度比較慢。一個比較好的方法是,每次從硬碟讀取一個chunk_size的資料,然後將這些資料儲存到記憶體中,在需要的時候從記憶體中讀取,比如使用下面的方法:
h = h5py.File(hd5file,'r') train = h['train'] X = train[0:100] #一次從硬碟中讀取比較多的資料,X將儲存在記憶體中 X[1] #從記憶體中讀取 X[2] #從記憶體中讀取
這樣的方法就會快很多。
原文來自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2905069/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Python 讀取HDF5檔案Python
- Python3 檔案操作詳解Python
- 詳解python檔案讀寫操作Python
- python---之table寫hdf5檔案Python
- Scala檔案操作詳解
- C++ 檔案操作詳解C++
- Python:檔案操作詳細教程Python
- JavaScript 檔案操作方法詳解JavaScript
- Java對各種檔案的操作詳解Java
- Python操作檔案Python
- python檔案操作Python
- Python之ini配置檔案詳解Python
- Log4j2 + Maven的配置檔案示例詳解Maven
- Python基礎知識詳解 從入門到精通(六)檔案操作Python
- python操作Redis詳解PythonRedis
- Python檔案關閉機制詳解Python
- Python的檔案操作Python
- python 操作整理檔案Python
- 1.4.0 Python檔案操作Python
- Python 檔案操作(一)Python
- python_檔案操作Python
- Python檔案的操作Python
- Python檔案操作題Python
- 這可能是最詳細的Python檔案操作Python
- 第10天 | 12天搞定Python,檔案操作(超詳細)Python
- Python 檔案、目錄操作Python
- python3.7 檔案操作Python
- 7、python之檔案操作Python
- python檔案讀寫操作Python
- Python基礎——檔案操作Python
- python 檔案操作入門Python
- python對檔案的操作Python
- [Python] shutil 模組(檔案操作)Python
- python--檔案操作指南Python
- Python OS模組操作檔案Python
- 18 Python如何操作檔案?Python
- Dockerfile檔案詳解Docker
- mtl檔案詳解