沿 xarray 中的非坐标维度加入
Join along a non-coordinate dimension in xarray
我正在尝试将一组值从一个 DataArray
连接到另一个。他们应该根据第一个的非维度坐标加入。我认为这应该很容易,但我似乎无法解决。
第一个数组:
In [4]: primary=xr.DataArray(np.random.rand(4), dims=list('a'))
...: primary.coords['group'] = (('a',), [0,0,1,1])
...: primary
...:
Out[4]:
<xarray.DataArray (a: 4)>
array([ 0.27772841, 0.06126117, 0.51753086, 0.35994987])
Coordinates:
* a (a) int64 0 1 2 3
group (a) int64 0 0 1 1
第二个数组:
In [5]: secondary=xr.DataArray(np.random.rand(2), dims=['group'], coords={'group': [0,1]})
...: secondary
...:
Out[5]:
<xarray.DataArray (group: 2)>
array([ 0.75944366, 0.90325489])
Coordinates:
* group (group) int64 0 1
我怎样才能 primary - secondary
使数组沿着 group
维度连接?
谢谢
您需要 groupby
第一个 但不对其应用聚合:
In [6]: primary.groupby('group') - secondary
Out[6]:
<xarray.DataArray (a: 4)>
array([-0.48171525, -0.69818249, -0.38572403, -0.54330502])
Coordinates:
* a (a) int64 0 1 2 3
group (a) int64 0 0 1 1
我正在尝试将一组值从一个 DataArray
连接到另一个。他们应该根据第一个的非维度坐标加入。我认为这应该很容易,但我似乎无法解决。
第一个数组:
In [4]: primary=xr.DataArray(np.random.rand(4), dims=list('a'))
...: primary.coords['group'] = (('a',), [0,0,1,1])
...: primary
...:
Out[4]:
<xarray.DataArray (a: 4)>
array([ 0.27772841, 0.06126117, 0.51753086, 0.35994987])
Coordinates:
* a (a) int64 0 1 2 3
group (a) int64 0 0 1 1
第二个数组:
In [5]: secondary=xr.DataArray(np.random.rand(2), dims=['group'], coords={'group': [0,1]})
...: secondary
...:
Out[5]:
<xarray.DataArray (group: 2)>
array([ 0.75944366, 0.90325489])
Coordinates:
* group (group) int64 0 1
我怎样才能 primary - secondary
使数组沿着 group
维度连接?
谢谢
您需要 groupby
第一个 但不对其应用聚合:
In [6]: primary.groupby('group') - secondary
Out[6]:
<xarray.DataArray (a: 4)>
array([-0.48171525, -0.69818249, -0.38572403, -0.54330502])
Coordinates:
* a (a) int64 0 1 2 3
group (a) int64 0 0 1 1