У меня есть простой массив (скажем, длина 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()
?