簡體   English   中英

Append HDF5 文件中的數據

[英]Append Data in HDF5 file

我想 append 新日期到我已經創建的 HDF5 文件,但我不知道如何 append 更多數據,我不知道附加的實際語法

我已經創建了一個 HDF5 文件來將我的數據以 HDF 格式保存為

with h5py.File(save_path+'PIC200829_256x256x256x3_fast_sj1.hdf5', 'w') as db:
       db.create_dataset('Predframes', data=trainX)
       db.create_dataset('GdSignal', data=trainY)
# this can create an hdf5 file with given name
# and save the data in the given format 

我想要的是我想要 append 更多數據(相同數據),在下一次迭代中,而不是覆蓋和創建新的 HDF 文件,我知道我會將“w”更改為“a”但我不知道'知道我需要為 append 寫什么而不是創建

而不是db.create_dataset('Predframes', data=trainX) as db.append('Predframes', data=trainX)格式/語法不正確? 我應該寫什么到 append 而不是創建?

trainX 的形狀是 (2500, 100, 100, 40) 所以當下一個具有相同形狀 (2500, 100, 100, 40) 的 trainX 附加到第一個時,它的大小應該是 (5000, 100, 100, 40) 而 trainY 的大小是 (2500,80)。 添加后應該是 (5000, 80)

這是所需的代碼。 數據集的初始創建必須指定最外層維度應該能夠調整大小。

from os import path

def create_for_append(h5file, name, data):
    data = np.asanyarray(data)
    return h5file.create_dataset(
          name, data=data, maxshape=(None,) + data.shape[1:])


filepath = path.join(save_path, 'PIC200829_256x256x256x3_fast_sj1.hdf5')
with h5py.File(filepath, 'w') as db:
    create_for_append(db,'Predframes', trainX)
    create_for_append(db,'GdSignal', trainY)

然后我們可以通過調整數據集的大小並將新數據放在新分配的范圍內來 append 新數據。

def append_to_dataset(dataset, data):
    data = np.asanyarray(data)
    dataset.resize(len(dataset) + len(data), axis=0)
    dataset[-len(data):] = data


with h5py.File(filepath, 'a') as db:
    append_to_dataset(db['Predframes'], trainX)
    append_to_dataset(db['GdSignal'], trainY)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM