h5py 必知 String儲存

2021-09-11 04:49:31 字數 2394 閱讀 6792

1. h5py 檔案介紹

乙個h5py檔案是 「dataset」 和 「group」 二合一的容器。 

1. dataset : 類似陣列組織的資料的集合,像 numpy 陣列一樣工作 

2. group : 包含了其它 dataset 和 其它 group ,像字典一樣工作

看下圖: 

通過上圖,我們可以知道 h5py 檔案就像是資料夾一樣,裡面很放檔案還有資料夾,主資料夾以 『/』 開始,這又像linux的樹形結構。知道這些我們就可以開始向 h5py 檔案讀取或者寫入了。

2. 寫入資料

根據上面的了解,我們開始建立乙個h5py檔案並寫入資料:

import h5py

"""    create_dataset : 新建 dataset

create_group : 新建 group

"""x = np.arange(100)

with h5py.file('test.h5','w') as f:

f.create_dataset('test_numpy',data=x)

subgroup = f.create_group('subgroup')

subgroup.create_dataset('test_numpy',data=x)

subsub = subgroup.create_group('subsub')

subsub.create_dataset('test_numpy',data=x)

**講解:以上面的結構圖進行講解,我們以寫的模式新建了乙個 test.h5 的 h5py 檔案,然後我們新建了乙個檔案叫 test_numpy 並寫入了預先準備好的 numpy array .接著新建乙個資料夾叫 subgroup 並在裡面也新建同樣的 test_numpy 檔案,又在裡面新建了乙個叫 subsub 的資料夾 ….

可以發現這真的就跟我們平時操作資料夾沒有什麼區別。3. 讀取資料

"""

f['key_name'] : 獲取對應的物件    

"""def read_data(filename):

with h5py.file(filename,'r') as f:

def print_name(name):

print(name)

f.visit(print_name)

print('---------------------------------------')

subgroup = f['subgroup']  

print(subgroup.keys())

print('---------------------------------------')

dset = f['test_numpy']

print(dset)

print(dset.name)

print(dset.shape)

print(dset.dtype)

print(dset[:])

print('---------------------------------------')

read_data('test.h5')

輸出結果: 

跟我們預期的一樣,主檔案 / 下有 subgroup 和 test_numpy 而 /subgroup 下又有兩個物件,對應的就是我們上面新建的。dataset 的使用也確實跟 numpy 陣列相似。總之,你可以像使用 numpy 陣列一樣使用 dataset ,使用 字典 一樣使用 group 。

4. 總結

前面說了 dataset 是類 numpy array 所以,你能寫進的資料 只能只能只能 是陣列,如果你想存入其他的資料,參考下面的實現。

4.1 如何儲存字串

確定儲存的資料型別,python3 vlen = str ,python 2 vlen=unicode。 

新建資料庫後,明確陣列的維度,傳入型別,再賦值。

dt = h5py.special_dtype(vlen=str)

data = np.array([['123'],['456']])

with h5py.file('testdict.h5','w') as f:

ds = f.create_dataset('test_dict', data.shape , dtype=dt)

ds[:] = data

4.2 如何儲存ascii

跟上面類似

python庫 h5py入門講解

h5py檔案是存放兩類物件的容器,資料集 dataset 和組 group dataset類似陣列類的資料集合,和numpy的陣列差不多。group是像資料夾一樣的容器,它好比python中的字典,有鍵 key 和值 value group中可以存放dataset或者其他的group。鍵 就是組成員...

python庫 h5py入門講解

h5py檔案是存放兩類物件的容器,資料集 dataset 和組 group dataset類似陣列類的資料集合,和numpy的陣列差不多。group是像資料夾一樣的容器,它好比python中的字典,有鍵 key 和值 value group中可以存放dataset或者其他的group。鍵 就是組成員...

h5py的MPI驅動環境配置

h5py是python建立和操作hdf5格式的乙個模組。h5py提供了乙個mpi介面,支援同時對乙個hdf5檔案進行並行操作。通常情況下,我們使用 pip install modulename 或 conda install modulename 來安裝python模組。但是這裡要想使用mpi驅動,...