【问题标题】:How to match all variables in xarray encoding (blosc, zarr compression)如何匹配xarray编码中的所有变量(blosc,zarr压缩)
【发布时间】:2021-09-07 10:34:05
【问题描述】:

如何使用zarr压缩的例子有如下代码示例see xarray doc


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”变量。但是,如果我想应用到我的所有变量,不管它们是如何命名的。我是否必须显式创建编码字典以匹配我的数据集/数组中的所有变量,或者是否存在某种通配符模式?我只想用同一个压缩器压缩整个数据集。

【问题讨论】:

    标签: python-xarray zarr


    【解决方案1】:

    如果您想为所有变量设置相同的编码,您可以通过简单的理解来做到这一点。当您遍历数据集时,它会返回变量名称。

    例子:

    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})
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-07
      • 2016-09-24
      • 2020-04-03
      • 2015-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多