我有一个简单的对象数组(例如长度1000)。我想用精简版替换它,只选择项的子集,这是使用大小为1000的布尔数组指定的。我想保持其他所有内容相同(例如,如果该数组是持久数组,我想更改磁盘以及内存上的阵列)。我不能简单地重新分配数组:
my_zarr_data = my_zarr_data[:][selected_items]
因为这样我得到错误ValueError: missing object_codec for object array
。另一种选择是制作副本,删除所有数据,然后使用append()
从原始数据添加回去,但是我看不到如何清除一个奇怪的数组,同时保持object_codec和其他参数相同(也许我可以做resize(0)
?)。目前,我将大小调整为sum(selected_items)
,然后使用my_zarr_data.set_basic_selection(..., my_zarr_data[:][selected_items])
。那正确吗?有没有更有效的方法来永久性地重新分配数组以(例如)从get_mask_selection()
返回值?