HDF5 (по крайней мере, версия, к которой я привык, 1.6.9) не позволяет удалять. На самом деле, это так, но это не освобождает используемое пространство, в результате чего у вас все еще есть огромный файл. Как вы сказали, вы можете использовать h5repack, но это пустая трата времени и ресурсов.
Что-то, что вы можете сделать, это иметь боковой набор данных, содержащий логическое значение, сообщающее вам, какие значения являются «живыми», а какие были удалены. Это не уменьшает размер файла, но, по крайней мере, дает вам быстрый способ удаления.
Альтернативой является определение плиты в вашем массиве, копирование соответствующих данных, затем удаление старого массива или всегда доступ к данным через плиту, а затем переопределение их по мере необходимости (хотя я никогда этого не делал , так что я не уверен, возможно ли это, но так и должно быть)
Наконец, вы можете использовать стратегию монтирования hdf5, чтобы ваши наборы данных содержались в «прикрепленном» hdf5-файле, который вы монтируете в корневой hdf5. Если вы хотите удалить материал, скопируйте интересные данные в другой смонтированный файл, размонтируйте старый файл и удалите его, а затем перемонтируйте новый файл в нужное место. Это решение может быть грязным (поскольку у вас есть несколько файлов), но оно позволяет вам освободить место и работать только с частями вашего дерева данных, а не с помощью перепаковки.