【发布时间】:2019-04-04 09:44:27
【问题描述】:
我有一个包含 NaN 的大型 xarray DataArray,并想用 zarr 保存它。我想最小化文件大小,并且可以丢失一些精度 - 16 位应该可以。
我尝试使用 numcodecs.FixedScaleOffset(astype='u2') 过滤器,但这会将所有 NaN 存储为零。由于数据还包含零作为有效值,所以这不是很有帮助。
【问题讨论】:
标签: encoding python-xarray zarr
我有一个包含 NaN 的大型 xarray DataArray,并想用 zarr 保存它。我想最小化文件大小,并且可以丢失一些精度 - 16 位应该可以。
我尝试使用 numcodecs.FixedScaleOffset(astype='u2') 过滤器,但这会将所有 NaN 存储为零。由于数据还包含零作为有效值,所以这不是很有帮助。
【问题讨论】:
标签: encoding python-xarray zarr
NumPy 的u2(又名uint16)不支持NaN 值(请参阅SO answer)。 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#writing-encoded-data
【讨论】: