Python xarray DataArray.sel返回最初未分配给数据的坐标
我有一个存储在xarray数据数组中的多元数据集。我想选择DataArray的一部分并删除我选择的coords集合中不包含的coords。例如:Python xarray DataArray.sel返回最初未分配给数据的坐标,python,python-xarray,Python,Python Xarray,我有一个存储在xarray数据数组中的多元数据集。我想选择DataArray的一部分并删除我选择的coords集合中不包含的coords。例如: ar1 = xr.DataArray(np.random.random((5,3,3)), coords={'range':np.arange(0,5), 'vars':['var1','var2','var3'], 'axes':['ax1','ax2','ax3']}, dim
ar1 = xr.DataArray(np.random.random((5,3,3)),
coords={'range':np.arange(0,5), 'vars':['var1','var2','var3'], 'axes':['ax1','ax2','ax3']},
dims=['range', 'vars', 'axes'],
name='ar1' )
ar2 = xr.DataArray(np.random.random((5,1,2)),
coords={'range':np.arange(0,5), 'vars':['var4'],'labels':['l1','l2']},
dims=['range', 'vars', 'labels'],
name='ar2' )
dar = ar1.combine_first(ar2)
dar = dar.sel({'vars':['var1','var2','var3'], 'axes':['ax1','ax2','ax3']}, drop=True)
dar
DataArray.sel
产生以下结果:
<xarray.DataArray 'ar1' (range: 5, vars: 3, axes: 3, labels: 2)>
array([[[[0.38942957, 0.38942957],
[0.45528695, 0.45528695],
[0.49853459, 0.49853459]],
...
[[0.67717998, 0.67717998],
[0.89777309, 0.89777309],
[0.47580058, 0.47580058]]]])
Coordinates:
* vars (vars) object 'var1' 'var2' 'var3'
* range (range) int64 0 1 2 3 4
* axes (axes) <U3 'ax1' 'ax2' 'ax3'
* labels (labels) <U2 'l1' 'l2'
如果不想合并坐标,为什么要先使用
combine_
?xr.merge
是否执行所需操作?这是一个生成与我正在处理的数据集相似的数据集的示例。最后,我希望只在数据的选定部分执行操作,而不从每个组件重新创建DataArray查看dar
,然后sel
显示它确实有标签维度上的数据。您的问题是如何以不同方式组合ar1
和ar2
,还是如何从dar
中选择一些数据子集;如何在没有标签的情况下从dar
选择数据是dar
上的一个维度!i、 e.它是5x3x2,其中2为标签尺寸。“选择不带标签”是什么意思?也许会显示你的预期结果?
<xarray.DataArray 'ar1' (range: 5, vars: 3, axes: 3)>
array([[[[0.38942957, 0.38942957],
[0.45528695, 0.45528695],
[0.49853459, 0.49853459]],
...
[[0.67717998, 0.67717998],
[0.89777309, 0.89777309],
[0.47580058, 0.47580058]]]])
Coordinates:
* vars (vars) object 'var1' 'var2' 'var3'
* range (range) int64 0 1 2 3 4
* axes (axes) <U3 'ax1' 'ax2' 'ax3'