考虑XArray DataArray:
df2 = df.mask(pd.isnull, lambda x: (x,x.name))
print(f'\n{df2.to_string()}')
我们假设我们有一个数据数组维数较低的蒙版:
DA=xr.DataArray(np.random.rand(3,4,5))
(3x5遮罩)
现在,我想将蒙版中的所有元素提取到一个numpy向量中,对该向量进行处理,然后将结果粘贴回DataArray中。
mask=DA.mean(dim='dim_1')>.5
(看起来很直观)返回
DA[mask]
IndexError: 2-dimensional boolean indexing is not supported.
允许将未选择的元素设置为nan,但这与提取向量不同。
numpy多维布尔索引(xr.where
)在这里不起作用,因为尺寸不匹配。
我发现的唯一解决方案是以这种笨拙的方式扩展蒙版:
DA.values[mask.values]
(我使用字符串'masked'而不是nan来避免在屏蔽之前与DA中存在的潜在nan值进行交互)
有没有更自然的方法来实现这一目标?