如何在numcodecs中编码NaN值?使用astype ='u2'进行量化?

时间:2019-04-04 09:44:27

标签: encoding python-xarray zarr

我有一个包含NaN的大型xarray DataArray,并想用zarr保存它。我想最小化文件大小,并且可以减少几位精度就可以了-16位应该可以。 我尝试使用FixedScaleOffset(astype='u2')过滤器,但这会将所有NaN存储为零。由于数据还包含零作为有效值,因此并不是很有用。

2 个答案:

答案 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