堆栈 xarray DataArray
Stack xarray DataArray
我有 N 个 1D xr.DataArray
,有 1 个 array
坐标 b
和 1 个 scalar
坐标 a
。我想将它们组合成具有 array
坐标 b
、a
的 2D DataArray
。这个怎么做?我试过:
x1 = xr.DataArray(np.arange(0,3)[...,np.newaxis], coords=[('b', np.arange(3,6)),('a', [10])]).squeeze()
x2 = xr.DataArray(np.arange(0,3)[...,np.newaxis], coords=[('b', np.arange(3,6)),('a', [11])]).squeeze()
xcombined = xr.concat([x1, x2])
xcombined
结果:
<xarray.DataArray (concat_dims: 2, b: 3)>
array([[0, 1, 2],
[0, 1, 2]])
Coordinates:
* b (b) int64 3 4 5
a (concat_dims) int64 10 11
Dimensions without coordinates: concat_dims
现在我特别喜欢select一个'a':
xcombined.sel(a=10)
但是,这引发了:
ValueError: dimensions or multi-index levels ['a'] do not exist
如果您将 dim
提供给 concat
,这有效:
xcombined = xr.concat([x1, x2], dim='a')
然后:
xcombined.sel(a=10)
<xarray.DataArray (b: 3)>
array([0, 1, 2])
Coordinates:
* b (b) int64 3 4 5
a int64 10
我有 N 个 1D xr.DataArray
,有 1 个 array
坐标 b
和 1 个 scalar
坐标 a
。我想将它们组合成具有 array
坐标 b
、a
的 2D DataArray
。这个怎么做?我试过:
x1 = xr.DataArray(np.arange(0,3)[...,np.newaxis], coords=[('b', np.arange(3,6)),('a', [10])]).squeeze()
x2 = xr.DataArray(np.arange(0,3)[...,np.newaxis], coords=[('b', np.arange(3,6)),('a', [11])]).squeeze()
xcombined = xr.concat([x1, x2])
xcombined
结果:
<xarray.DataArray (concat_dims: 2, b: 3)>
array([[0, 1, 2],
[0, 1, 2]])
Coordinates:
* b (b) int64 3 4 5
a (concat_dims) int64 10 11
Dimensions without coordinates: concat_dims
现在我特别喜欢select一个'a':
xcombined.sel(a=10)
但是,这引发了:
ValueError: dimensions or multi-index levels ['a'] do not exist
如果您将 dim
提供给 concat
,这有效:
xcombined = xr.concat([x1, x2], dim='a')
然后:
xcombined.sel(a=10)
<xarray.DataArray (b: 3)>
array([0, 1, 2])
Coordinates:
* b (b) int64 3 4 5
a int64 10