Как мне кодировать значения NaN в numcodecs.Quantize с помощью astype='u2'?

У меня есть большой массив данных xarray, содержащий NaN, и я хочу сохранить его с помощью zarr. Я хочу минимизировать размер файла, и я согласен с потерей нескольких битов точности - 16 бит должны быть в порядке. Я пытался с помощью FixedScaleOffset(astype='u2') фильтр, но при этом все NaN сохраняются как ноль. Поскольку данные также содержат нули в качестве допустимых значений, это не очень полезно.

1 ответ

NumPy-х u2 (ака uint16) не поддерживает значения NaN (пожалуйста, ответ SO) Zarr просто отражает поведение NumPy.

Не работает с numcodecs.Quantize, но xarray encoding параметры могут указывать _FillValue:

dataset.to_zarr(store, encoding={'<array-name>': {'dtype': 'uint16', '_FillValue': 65535}})

См. https://xarray.pydata.org/en/stable/io.html.

Другие вопросы по тегам