You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在xarray中获取变量点对应的time、lat、lon维度索引

xarray筛选超阈值降水并获取对应维度索引解决方案
  • 方法1:转pandas DataFrame批量处理(更适合批量统计需求,代码更简洁)
# 将降水数据转为带坐标的DataFrame
df = ds3.tp.to_dataframe().reset_index()
# 筛选大于阈值的降水记录
outlier_df = df[df["tp"] > 0.08]
# 追加获取对应原数据集的维度位置索引
outlier_df["time_index"] = ds3.time.get_indexer(outlier_df["time"])
outlier_df["lat_index"] = ds3.lat.get_indexer(outlier_df["lat"])
outlier_df["lon_index"] = ds3.lon.get_indexer(outlier_df["lon"])

# 输出查看结果
print(outlier_df)

你需要的所有维度坐标、降水值、对应位置索引都存在outlier_df中,可直接导出或后续处理。

  • 方法2:遍历outliers逐行获取(适合需要单条逐个处理的场景)
outliers = ds3.where(ds3.tp > 0.08, drop=True)
for x in outliers.tp:
    # 获取降水值
    tp_val = x.item()
    # 获取对应维度的实际坐标值
    time_val = x.time.item()
    lat_val = x.lat.item()
    lon_val = x.lon.item()
    # 获取对应原数据集的维度位置索引
    time_idx = ds3.time.get_indexer([time_val])[0]
    lat_idx = ds3.lat.get_indexer([lat_val])[0]
    lon_idx = ds3.lon.get_indexer([lon_val])[0]
    # 按需打印或存储
    print(f"降水值:{tp_val:.6f}, 时间索引:{time_idx}, 纬度索引:{lat_idx}, 经度索引:{lon_idx}")

补充说明:如果你只需要坐标的实际值(如1981-03-01、8.25这类)不需要原数组的位置索引,可以省略get_indexer步骤,直接使用获取到的time_val、lat_val、lon_val即可。

内容的提问来源于stack exchange,提问作者Jessica

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 07:45:02