设置 xarray DataArray 维度的坐标

Set coordinates of xarray DataArray dimension

我喜欢 concat/stack 将不同的 DataArrays 变成一个新的 DataArrays,在 concat 维度上有特定的坐标:

x1 = xr.DataArray(np.arange(0,3)[...,np.newaxis], coords=[('b', np.arange(3,6)),('a', [10])]).squeeze()
x2 = xr.DataArray(np.arange(1,4)[...,np.newaxis], coords=[('b', np.arange(3,6)),('a', [10])]).squeeze()

xc = xr.concat([x1,x2], dim='new')
<xarray.DataArray (new: 2, b: 3)>
array([[0, 1, 2],
       [1, 2, 3]])
Coordinates:
  * b        (b) int64 3 4 5
    a        int64 10
Dimensions without coordinates: new

如何使用concat函数设置维度坐标'new'?

可以通过以下方式设置坐标:

xc['new'] = ['a', 'b']

concat 函数中的 dim 参数除了连接维度的名称外,还可以采用 DataArray 或 pandas.Index:

xc = xr.concat([x1,x2], dim=xr.DataArray(['a', 'b'], dims='new', name='new'))

xarray.concat 文档中有更多详细信息:http://xarray.pydata.org/en/stable/generated/xarray.concat.html#xarray.concat