У меня есть файл HDF5 с одномерным (N x 1) набором составных элементов - на самом деле это временный ряд. Данные сначала собираются в автономном режиме в файл HFD5, а затем анализируются. Во время анализа большая часть данных оказывается неинтересной, и только некоторые ее части интересны. Поскольку набор данных может быть довольно большим, я хотел бы избавиться от неинтересных элементов, сохраняя интересные. Например, сохраните элементы 0-100 и 200-300 и 350-400 набора данных из 500 элементов, оставите остальные. Но как?
Есть ли у кого-нибудь опыт в том, как это сделать с HDF5? По-видимому, это можно сделать несколькими способами, по крайней мере:
- (Очевидное решение), создайте новый свежий файл и напишите необходимые данные по элементам. Затем удалите старый файл.
- Или, в старый файл, создайте новый свежий набор данных, напишите необходимые данные, отсоедините старый набор данных, используя H5Gunlink(), и избавитесь от невостребованного свободного пространства, запустив файл через h5repack.
- Или переместите интересные элементы в существующем наборе данных к началу (например, переместите элементы 200-300 в позиции 101-201 и элементы 350-400 в позиции 202-252). Затем вызовите H5Dset_extent(), чтобы уменьшить размер набора данных. Затем, возможно, запустите h5repack, чтобы освободить свободное пространство.
Поскольку файлы могут быть довольно большими, даже если неинтересные элементы были удалены, я бы предпочел не переписывать их (это займет много времени), но, похоже, требуется освободить свободное пространство. Любые подсказки от экспертов HDF5?