我有一些带有暗淡的数组,'time', 'lat', 'lon'
有些只有'lat', 'lon'
. 我经常必须这样做才能使用 2d(经纬度)掩码来掩码与时间相关的数据:
x.data[:, mask.data] = np.nan
当然,计算按预期广播。如果y
是 2d lat-lon 数据,则其值将广播到 x 中的所有时间坐标:
z = x + y
但是索引并没有像我期望的那样广播。我希望能够做到这一点,但它会引发ValueError: Buffer has wrong number of dimensions:
x[mask] = np.nan
最后,似乎xr.where
确实可以按预期跨时间坐标广播掩码的值,但是您不能以这种方式设置值。
x_masked = x.where(mask)
那么,我在这里是否缺少一些有助于使用缺少尺寸(并且需要广播)的布尔掩码设置值的东西?我在顶部提供的选项真的是做到这一点的方法吗(在这种情况下,我不妨只使用标准的 numpy 数组......)