如何使用zarr压缩的示例有以下代码示例见xarray
In [42]: import zarr
In [43]: compressor = zarr.Blosc(cname="zstd", clevel=3, shuffle=2)
In [44]: ds.to_zarr("foo.zarr", encoding={"foo": {"compressor": compressor}})
Out[44]: <xarray.backends.zarr.ZarrStore at 0x7f383eeba970>编码映射要求在"foo“变量上应用给定的压缩器。但是,如果我想应用于我所有的变量,而不管它们是如何命名的,该怎么办呢?我是否需要显式地创建编码字典来匹配数据集/数组中的所有变量,或者是否存在某种外卡模式?我只想用同一个压缩器压缩整个数据集。
发布于 2021-09-07 11:39:29
如果您想为变量的all设置相同的编码,您可以通过简单的理解就可以这样做。当您在dataset上迭代时,它将返回变量名。
示例:
import xarray as xr
import zarr
# test dataset
ds = xr.tutorial.open_dataset("tiny")
# add second variable
ds['tiny2'] = ds.tiny*2
compressor = zarr.Blosc(cname="zstd", clevel=3, shuffle=2)
# encodings
enc = {x: {"compressor": compressor} for x in ds}
# check
print(enc)
# {'tiny': {'compressor': Blosc(cname='zstd', clevel=3, shuffle=BITSHUFFLE, blocksize=0)}, 'tiny2': {'compressor': Blosc(cname='zstd', clevel=3, shuffle=BITSHUFFLE, blocksize=0)}}
# x is the variable name
ds.to_zarr("foo.zarr", encoding=enc})https://stackoverflow.com/questions/69086610
复制相似问题