Как вырубить / удалить массив zarr
У меня есть простой массив (скажем, длиной 1000) объектов в zarr. Я хочу заменить его уменьшенной версией, выбрав только подмножество элементов, как указано с использованием логического массива размером 1000. Я хочу, чтобы все остальное оставалось таким же (например, если этот массив является постоянным, я хочу изменить массив как на диске, так и в памяти). Я не могу просто переназначить массив:
my_zarr_data = my_zarr_data[:][selected_items]
Потому что тогда я получаю ошибку ValueError: missing object_codec for object array
. Другой вариант - сделать копию, удалить все данные, а затем добавить их обратно из оригинала, используяappend()
, но я не вижу, как очистить массив zarr, сохранив при этом object_codec и другие параметры (возможно, я мог бы просто сделатьresize(0)
?). На данный момент я изменяю размер до длиныsum(selected_items)
а затем используя my_zarr_data.set_basic_selection(..., my_zarr_data[:][selected_items])
. Это правильно? Есть ли более эффективный способ навсегда переназначить массив (скажем) возвращаемому значению изget_mask_selection()
?