如何用Python的Xarray按数据变量'topo'子集化NetCDF冰雹数据集?
按海拔(topo)子集化NetCDF数据的正确方法
问题原因
topo是数据变量而非坐标变量,因此无法用sel()直接按topo取值筛选;- xarray不支持直接将DataArray作为索引键,所以
haildata[haildata['topo']>=1500.]这种写法会触发报错。
正确实现语法
方法1:用where()保留符合条件的数据
适合需要保留所有维度,仅将不满足条件的位置设为NaN的场景,加上drop=True可自动删除全为NaN的维度:
elev1 = haildata.where(haildata['topo'] >= 1500., drop=True)
方法2:结合case维度筛选(若topo与case一一对应)
如果每个case对应唯一的topo值,可先生成布尔掩码,再用sel()筛选符合条件的case:
# 生成topo≥1500的case掩码 case_mask = haildata['topo'] >= 1500. # 筛选符合条件的case elev1 = haildata.sel(case=case_mask)
内容的提问来源于stack exchange,提问作者Cumulus303
相关产品推荐
相关产品推荐

