【问题标题】:How do I encode NaN values in xarray / zarr with integer dtype?如何使用整数 dtype 在 xarray / zarr 中编码 NaN 值?
【发布时间】:2019-04-04 09:44:27
【问题描述】:

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

【问题讨论】:

    标签: encoding python-xarray zarr


    【解决方案1】:

    NumPy 的u2(又名uint16)不支持NaN 值(请参阅SO answer)。 Zarr 只是反映了 NumPy 的行为。

    【讨论】:

      【解决方案2】:

      不适用于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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-04-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-04
        • 2020-10-24
        • 1970-01-01
        • 2021-06-09
        相关资源
        最近更新 更多