【发布时间】:2020-10-23 04:11:22
【问题描述】:
当使用相同维度的多个坐标创建 DataArrays 时,它们不会自动索引其坐标,即以下方法不起作用:
d = DataArray([0], coords={'coordA': ('dim', [0]), 'coordB': ('dim', [0])}, dims=['dim'])
d.sel(coordA=0) # ValueError: dimensions or multi-index levels ['coordA'] do not exist
这是因为未创建 MultiIndex * dim: [coordA, coordB]。
有没有办法在创建 DataArray 时自动创建 MultiIndex?
我们可以在创建对象后创建索引,但是在很多地方创建DataArrays时这非常麻烦。
d = d.set_index(dim=['coordA', 'coordB'], append=True)
d.sel(coordA = 0) # works
在 xarray 0.13 之前,可以覆盖 DataArray.__init__ 方法并就地设置索引,但 inplace now raises an error。
class DataAssembly(DataArray):
def __init__(self, *args, **kwargs):
super(DataAssembly, self).__init__(*args, **kwargs)
self.set_index(dim=['coordA', 'coordB'], append=True, inplace=True) # no longer works since 0.13
【问题讨论】:
标签: python python-xarray