首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何匹配xarray编码中的所有变量(blosc、zarr压缩)

如何匹配xarray编码中的所有变量(blosc、zarr压缩)
EN

Stack Overflow用户
提问于 2021-09-07 10:34:05
回答 1查看 347关注 0票数 1

如何使用zarr压缩的示例有以下代码示例见xarray

代码语言:javascript
复制
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“变量上应用给定的压缩器。但是,如果我想应用于我所有的变量,而不管它们是如何命名的,该怎么办呢?我是否需要显式地创建编码字典来匹配数据集/数组中的所有变量,或者是否存在某种外卡模式?我只想用同一个压缩器压缩整个数据集。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-07 11:39:29

如果您想为变量的all设置相同的编码,您可以通过简单的理解就可以这样做。当您在dataset上迭代时,它将返回变量名。

示例:

代码语言:javascript
复制
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})
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69086610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档