我有一个包含NaN的大型xarray DataArray,并想用zarr保存它。我想最小化文件大小,并且可以减少几位精度就可以了-16位应该可以。
我尝试使用FixedScaleOffset(astype='u2')
过滤器,但这会将所有NaN存储为零。由于数据还包含零作为有效值,因此并不是很有用。
答案 0 :(得分:0)
NumPy的u2
(又称uint16
)不支持NaN值(请SO answer)。 Zarr仅反映了NumPy的行为。
答案 1 :(得分:0)
它不适用于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