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

如何为Xarray.Dataset变量设置唯一自定义坐标并移除旧坐标

让custom_idx成为temperature_c的唯一坐标的方法

原数据集里temperature_c是二维(lat×lon)变量,你添加的custom_idx一般是和lat、lon同维度的二维坐标,要让它成为temperature_c的唯一坐标,需要先把二维数据和坐标都展平为一维,再重新关联维度,具体操作如下:

  • 先将temperature_c的二维数据展平为一维,同时堆叠原维度:

    temp_flat = ds["temperature_c"].stack(temp_dim=("lat", "lon"))
    
  • 对应地展平custom_idx坐标,拿到一维的坐标值:

    custom_idx_flat = ds["custom_idx"].stack(temp_dim=("lat", "lon")).values
    
  • 重新定义temperature_c变量,将维度设置为custom_idx,并赋值展平后的数据:

    ds["temperature_c"] = (["custom_idx"], temp_flat.values)
    
  • 更新数据集的custom_idx坐标为一维的展平值,同时可以删除不再需要的lat和lon坐标:

    ds = ds.assign_coords(custom_idx=custom_idx_flat).drop_vars(["lat", "lon"])
    

完成后,temperature_c的唯一维度就是custom_idx,对应的坐标也是你定义的custom_idx值。

如果你的custom_idx本身就是一维坐标(长度和temperature_c的元素总数一致),操作可以更简化:

# 直接重定义temperature_c的维度为custom_idx,赋值展平后的数据
ds["temperature_c"] = (["custom_idx"], ds["temperature_c"].values.flatten())
# 删除原lat、lon坐标(可选)
ds = ds.drop_vars(["lat", "lon"])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 22:40:59