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

如何在xarray中将坐标分配给维度?两种实现方式

问题描述

假设现有如下数据集:

>>> coords = {"coords": ("x", [10, 20, 30, 40])}
>>> dset = xr.Dataset(coords=coords)
>>> dset
<xarray.Dataset>
Dimensions:  (x: 4)
Coordinates:
    coords   (x) int64 10 20 30 40
Dimensions without coordinates: x
Data variables:
    *empty*

需要修改该数据集,让xarray将coords分配给维度x,即维度x不再是无坐标维度,coords作为其对应坐标。请提供两种实现方式:

  1. 修改数据集的创建方式
  2. 事后“修复”已有的数据集
解决方案

1. 修改数据集创建方式

创建数据集时,直接将坐标名称设为维度名x,xarray会自动把该坐标与维度x绑定:

>>> coords = {"x": [10, 20, 30, 40]}
>>> dset = xr.Dataset(coords=coords)
>>> dset
<xarray.Dataset>
Dimensions:  (x: 4)
Coordinates:
  * x        (x) int64 10 20 30 40
Data variables:
    *empty*

如果需要保留coords作为坐标的属性名,可显式指定维度关联并添加属性:

>>> coords = {"x": ("x", [10, 20, 30, 40], {"name": "coords"})}
>>> dset = xr.Dataset(coords=coords)

2. 事后修复已有数据集

针对已创建的数据集,有两种常用修复方式:

方式一:重命名坐标自动绑定维度

直接将coords重命名为x,xarray会自动把它绑定到维度x:

dset_fixed = dset.rename({"coords": "x"})

方式二:手动绑定维度坐标

若需保留coords作为坐标名,可手动将其指定为维度x的坐标:

# 方法1:删除无坐标维度后重新分配坐标
dset_fixed = dset.drop_dims("x").assign_coords(x=dset["coords"])

# 方法2:替换维度坐标后删除原变量
dset["x"] = dset["coords"]
dset = dset.drop_vars("coords")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 03:55:15