我有一個具有一維(N×1)複合元素數據集的HDF5文件 - 實際上它是一個時間序列。數據首先離線收集到HFD5文件中,然後進行分析。在分析過程中,大部分數據變得毫無趣味,而且只有一部分是有趣的。由於數據集可能很大,我希望擺脫無趣的元素,同時保留有趣的元素。例如,保留500個元素數據集中的元素0-100和200-300以及350-400,轉儲其餘元素。但是如何?從HDF5文件中刪除數據
有沒有人對HDF5如何實現這一點有經驗?顯然它可以通過幾種方式完成,至少:
- (明顯的解決方案),創建一個新的新文件,並在那裏寫入必要的數據,逐個元素。然後刪除舊文件。
- 或者,在舊文件中創建一個新的新數據集,在那裏寫入必要的數據,使用H5Gunlink()取消舊數據集的鏈接,然後通過h5repack運行文件來擺脫未聲明的可用空間。或者,將現有數據集中感興趣的元素移向起點(例如,將元素200-300移動到位置101-201,將元素350-400移動到位置202-252)。然後調用H5Dset_extent()來減小數據集的大小。然後可能會通過h5repack來釋放可用空間。
由於文件可能相當大,即使不感興趣的元素已被刪除,我寧願不重寫它們(這將需要很長時間),但似乎需要實際釋放可用空間。 HDF5專家的任何提示?
謝謝你的想法。這確實可以通過許多方式來完成。希望有一天真正的刪除功能將被添加到HDF5,不得不像這樣亂糟糟地刪除東西幾乎是荒謬的......但除此之外,它是一種很好的文件格式:-) – 2009-07-15 06:38:19