0

我有一个 Zarr 数据存储,但我需要重命名其中一个维度。假设我有这个(来自 xarray docs):

data = np.random.rand(4, 3)
locs = ["IA", "IL", "IN"]
times = pd.date_range("2000-01-01", periods=4)

da = xr.DataArray(data, coords=[times, locs], dims=["time", "space"])
ds = xr.Dataset({'my_var': da})
ds.to_zarr("my_zarr.zarr")

数据集输出截图

但我要我的space维度来真正地被称为state

而且我不想写一个的Zarr商店,我只想改变那个名字。

我怎样才能做到这一点?(我发现了一种 hacky 方式 - 见下文)

4

1 回答 1

0

我的 hacky 解决方案是手动重命名它们:

  1. 重命名目录
cd my_zarr.zarr
mv space state
  1. 手动重命名相关.zattts文件中的维度:

老的my_zarr.zarr/my_var/.zattrs

{
    "_ARRAY_DIMENSIONS": [
        "time",
        "space"
    ]
}

老的my_zarr.zarr/state/.zattrs

{
    "_ARRAY_DIMENSIONS": [
        "space"
    ]
}

新的my_zarr.zarr/my_var/.zattrs

{
    "_ARRAY_DIMENSIONS": [
        "time",
        "state"
    ]
}

新的my_zarr.zarr/state/.zattrs

{
    "_ARRAY_DIMENSIONS": [
        "state"
    ]
}

瞧: 数据集输出

但这很hacky,我不喜欢它的手动方式。它胜过编写一个全新的 zarr 商店,但有更好的方法吗?

于 2021-05-24T21:51:38.513 回答