我有一些带有dims 'time', 'lat', 'lon'
的数组,有些只有 'lat', 'lon'
. 为了使用2d(lat-lon)掩码屏蔽与时间相关的数据,我经常需要这样做:
x.data[:, mask.data] = np.nan
当然,计算按预期广播 . 如果 y
是2d lat-lon数据,则其值将广播到x中的所有时间坐标:
z = x + y
但索引并没有预期 . 我希望能够做到这一点,但它引发了ValueError:缓冲区的维数错误:
x[mask] = np.nan
最后,似乎 xr.where
确实按预期在时间坐标中广播了掩码的值,但是您不能以这种方式设置值 .
x_masked = x.where(mask)
那么,我是否在这里缺少一些有助于使用缺少维度的布尔掩码设置值(并且需要广播)?我在顶部提供的选项真的是这样做的方式(在这种情况下,我可能只是使用标准的numpy数组......)
1 回答
这里有一些相关的问题:Concise way to filter data in xarray
目前最好的方法是
.where
和.fillna
的组合 .但是xarray的变化将使这更加简洁 - 如果你感兴趣的话,请查看GitHub回购