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

如何在xarray中沿时间维度复制气候态数据?

基于xarray的实现方案

假设你使用xarray处理SST气候态数据(数据对象命名为sst_clim,包含lat、lon、time三个维度,其中time对应12个月份),以下是两种高效实现方式:

方法一:直接重复维度+替换时间坐标

这种方式简单直接,适合需要严格重复每年气候态的场景:

import pandas as pd
import xarray as xr

# 生成100年的月度时间序列(示例:1900-1999年)
time_100y = pd.date_range(start='1900-01-01', periods=100*12, freq='MS')

# 重复原气候态的time维度100次,再替换为新的时间轴
sst_100y = sst_clim.repeat(time=100).assign_coords(time=time_100y)

方法二:按月份匹配广播

如果原数据的时间标签格式不固定,这种方式通过月份匹配来广播,灵活性更强:

import pandas as pd
import xarray as xr

# 生成100年的月度时间序列
time_100y = pd.date_range(start='1900-01-01', periods=100*12, freq='MS')

# 创建匹配目标维度的空模板
template = xr.DataArray(
    dims=['lat', 'lon', 'time'],
    coords={'lat': sst_clim.lat, 'lon': sst_clim.lon, 'time': time_100y}
)

# 按月份匹配气候态数据,广播到模板维度
sst_100y = sst_clim.sel(time=template.time.dt.month).broadcast_like(template)

纯numpy实现(若未使用xarray)

如果你的数据是numpy数组(形状为(lat, lon, 12)),可以直接用numpy的repeat函数:

import numpy as np

# 假设sst_data为numpy数组,在time维度(第2轴)重复100次
sst_100y_np = np.repeat(sst_data, 100, axis=2)
# 后续可自行创建时间轴并封装为数据对象或保存

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 19:10:24