Как мне кодировать значения NaN в xarray / zarr с целым числом dtype? - PullRequest
0 голосов
/ 04 апреля 2019

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

Ответы [ 2 ]

0 голосов
/ 22 июля 2019

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

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

См. https://xarray.pydata.org/en/stable/io.html#writing-encoded-data

0 голосов
/ 19 апреля 2019

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

...