【发布时间】:2010-11-10 15:11:17
【问题描述】:
我有一个 HDF5 文件,其中包含复合元素的一维 (N x 1) 数据集 - 实际上它是一个时间序列。数据首先离线收集到 HFD5 文件中,然后进行分析。在分析过程中,大多数数据被证明是无趣的,只有部分数据是有趣的。由于数据集可能非常大,我想去掉不感兴趣的元素,同时保留有趣的元素。例如,保留 500 个元素数据集的 0-100 和 200-300 和 350-400 元素,转储其余元素。但是怎么做呢?
有人对如何使用 HDF5 完成此任务有经验吗?显然,它至少可以通过多种方式完成:
- (明显的解决方案),创建一个新文件并在其中逐个元素地写入必要的数据。然后删除旧文件。
- 或者,在旧文件中,创建一个新的新数据集,在其中写入必要的数据,使用 H5Gunlink() 取消链接旧数据集,并通过 h5repack 运行文件来清除未声明的可用空间。
- 或者,将现有数据集中的有趣元素移向开头(例如,将元素 200-300 移动到位置 101-201,将元素 350-400 移动到位置 202-252)。然后调用 H5Dset_extent() 来减小数据集的大小。然后可能会运行 h5repack 以释放可用空间。
由于即使删除了无趣的元素,文件也可能相当大,我宁愿不重写它们(这需要很长时间),但似乎需要实际释放可用空间。来自 HDF5 专家的任何提示?
【问题讨论】:
标签: hdf5