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

使用Xarray获取每个时间步长极值对应的经纬度坐标

获取Xarray数据集每个时间步变量极值对应的经纬度坐标

方法1:直接用idxmax/idxmin获取首个极值坐标

Xarray的idxmax()和idxmin()方法可直接返回指定维度上极值对应的坐标标签,无需手动处理索引,是最简便的实现方式。

假设数据集目标变量名为temp,示例代码如下:

import xarray as xr

# 获取每个时间步最大值对应的lat、lon坐标
max_coords = ds['temp'].idxmax(dim=['lat', 'lon'])
# 转换为DataFrame便于查看结果
max_coords_df = max_coords.to_dataframe()

# 获取每个时间步最小值对应的lat、lon坐标
min_coords = ds['temp'].idxmin(dim=['lat', 'lon'])
min_coords_df = min_coords.to_dataframe()

max_coords是包含lat和lon变量的Dataset,维度为time,直接对应每个时间点极值的经纬度实际值。

方法2:同时获取极值数值与对应坐标

如果需要同时保留极值的数值和坐标,可合并计算结果:

# 计算每个时间步的最大值并重命名
max_vals = ds['temp'].max(dim=['lat', 'lon']).rename('max_temp')
# 合并最大值数值与对应坐标
max_results = xr.merge([max_vals, max_coords])

# 最小值同理
min_vals = ds['temp'].min(dim=['lat', 'lon']).rename('min_temp')
min_results = xr.merge([min_vals, min_coords])

方法3:获取所有极值点(存在多个相同极值时)

若某个时间步存在多个经纬度点的变量值同为极值,idxmax/idxmin仅会返回第一个出现的点。要获取所有极值点,可使用where进行筛选:

# 获取每个时间步的最大值
max_vals = ds['temp'].max(dim=['lat', 'lon'])
# 筛选出所有等于最大值的点,丢弃非极值点
all_max_points = ds['temp'].where(ds['temp'] == max_vals, drop=True)
# 转换为DataFrame查看所有极值坐标
all_max_points_df = all_max_points.to_dataframe().dropna().reset_index()

# 最小值同理
min_vals = ds['temp'].min(dim=['lat', 'lon'])
all_min_points = ds['temp'].where(ds['temp'] == min_vals, drop=True)
all_min_points_df = all_min_points.to_dataframe().dropna().reset_index()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 14:50:43