如何在xarray encoding中为所有变量统一配置blosc/zarr压缩参数
xarray目前没有提供通配符匹配的encoding配置语法,你不需要手动逐个列出所有变量,用字典推导式遍历数据集变量即可一键生成全量encoding配置。
完整实现代码如下:
import zarr # 定义统一使用的压缩器 compressor = zarr.Blosc(cname="zstd", clevel=3, shuffle=2) # 对所有数据变量应用相同压缩配置,若需要包含坐标变量,将ds.data_vars改为ds.variables即可 encoding = {var: {"compressor": compressor} for var in ds.data_vars} # 写入zarr文件 ds.to_zarr("foo.zarr", encoding=encoding)
补充说明:
- 如果你需要给部分变量单独设置特殊配置,可以在生成通用encoding之后单独修改对应变量的配置,示例如下:
# 单独给名为"special_var"的变量设置更高压缩级别 encoding["special_var"]["compressor"] = zarr.Blosc(cname="zstd", clevel=9, shuffle=2) - 该方法适配任意数量变量的数据集,不需要提前知道变量名,完全满足统一全数据集压缩规则的需求。
内容的提问来源于stack exchange,提问作者marscher
相关产品推荐
相关产品推荐

