xarray 获取非 NaN 变量值的最高坐标



有没有一种矢量化的方法可以从空气中提取6并从风中提取7

ds = xr.merge([
xr.DataArray([3, 5, 6], coords={'init': [0, 1, 2]}, dims='init', name='air'),
xr.DataArray([8, 7, np.nan], coords={'init': [0, 1, 2]}, dims='init', name='wind')
])

循环方法是:

xr.merge([
ds[var]
.dropna('init', how='all')
.isel(init=-1)
.drop('init')
for var in ds.data_vars
])

返回:

<xarray.Dataset>
Dimensions:  ()
Data variables:
air      int64 6
wind     float64 7.0

但我不希望它遍历每个变量并使用 dropna(dropna 对于大数组需要很长时间(,所以我想知道是否有替代方案。

我认为最直接的解决方案是转发填充:ds.ffill('init').isel(init=-1)

最新更新