Python 基于索引的Xarray条件子集集

Python 基于索引的Xarray条件子集集,python,python-xarray,Python,Python Xarray,假设我有一个xr.DataArraya,包含一些随机数据的三维(time,lon,lat)。现在我有了第二个xr.DataArrayB,它有两个维度(lon,lat),具有与a相同的网格。B的值表示基于整数的time索引A 如何根据B中的整数值对A进行子集划分 也就是说,我想得到A的值,其中time坐标的整数索引等于B的值 MWE 将numpy作为np导入 作为pd进口熊猫 将xarray作为xr导入 A=xr.DataArray(np.random.randn(10,5,5), dims=[

假设我有一个
xr.DataArray
a,包含一些随机数据的三维(
time
lon
lat
)。现在我有了第二个
xr.DataArray
B,它有两个维度(
lon
lat
),具有与a相同的网格。B的值表示基于整数的
time
索引A

如何根据B中的整数值对A进行子集划分

也就是说,我想得到A的值,其中
time
坐标的整数索引等于B的值

MWE

将numpy作为np导入
作为pd进口熊猫
将xarray作为xr导入
A=xr.DataArray(np.random.randn(10,5,5),
dims=['time'、'lon'、'lat'],
坐标={'time':pd.日期范围(“2000-01-01”,句点=10),
“lon”:np.arange(1,6),
“lat”:名词arange(1,6)
}
)
B=xr.DataArray(np.random.randint(0,9,(5,5)),
dims=['lon','lat'],
coords={'lon':np.arange(1,6),
“lat”:名词arange(1,6)
}
)

感谢您提供了清晰的示例

IIUC,您想使用
B
中的值来选择
A
的时间坐标索引:

[9]中的
:A.isel(time=B)
出[9]:
阵列([[1.01208355,1.29773366,0.53875951,2.45590211,0.49782187],
[-1.25561793,  1.00070962,  1.39388746, -0.88571071, -0.58113385],
[ 1.21686752, -1.71612589,  0.08652589,  0.12663398,  0.4425077 ],
[ 1.65911561, -0.41454701, -0.69167209,  0.59707559,  0.64610678],
[ 0.7255797 ,  1.27375691, -0.10813576, -0.94236789,  1.53208474]])
协调:
时间(经纬度)日期时间64[ns]2000-01-01 2000-01-04。。。2000-01-08
*lon(lon)int64 1 2 3 4 5
*lat(lat)int64 1 2 3 4 5

就这么简单,
xarray
真的很棒。只是一个后续问题:有没有一种方法可以屏蔽(例如,作为
np.nan
)该特定索引的所有值?我也是xarray的初学者,但可能
a.where
是您需要的。话虽如此,我还是无法让它工作