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

如何对Xarray数据集的range坐标执行标量加法运算?

修改Xarray中range坐标值的正确方法

在Xarray中,直接通过赋值语句da.range = da.range + 200无法修改坐标,这是因为DataArray的坐标默认是**不可变(immutable)**的,直接赋值会被静默忽略。要实现给range坐标添加静态标量的需求,你可以使用以下两种方法:

方法1:使用assign_coords重新赋值坐标

这是Xarray推荐的不可变操作方式,直接计算新的range值并更新坐标:

# 计算新的range坐标值
new_range = da.range + 200
# 更新坐标并返回新的DataArray
da = da.assign_coords(range=new_range)

方法2:使用coords.update原地修改

如果你需要直接在原对象上修改(注意:此操作会改变原对象,不符合Xarray默认的不可变设计,但可以实现需求):

da.coords.update({'range': da.range + 200})

完整示例代码

import xarray as xr
import numpy as np
import pandas as pd

time = pd.date_range("2006-02-21", freq="s", periods=4)

# 创建DataArray并添加初始range坐标
da = xr.DataArray(np.random.randn(4, 4), dims=("range", "time"), coords={"time": time})
da = da.assign_coords(range=('range', [1.56,5.233,10.98,17.43]))

# 修改range坐标
da = da.assign_coords(range=da.range + 200)
print(da)

执行后会输出你期望的结果:

Coordinates:
  * range    (range) float64 201.56 205.233 210.98 217.43
  * time     (time) datetime64[ns] 2006-02-21 ... 2006-02-21T00:00:03

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 11:53:15