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

如何对时间维度长度不同的两个xarray DataArray按日期对应相乘

实现方案

优先推荐xarray简洁实现

核心逻辑是将3小时分辨率的data2时间向下取整到日维度,直接匹配data1的日维度索引,xarray会自动完成广播,无需手动处理维度对齐:

import xarray as xr

# 第一步:确保两个DataArray的time维度均为datetime64格式,避免索引匹配失败
data1["time"] = data1.time.astype("datetime64[ns]")
data2["time"] = data2.time.astype("datetime64[ns]")

# 第二步:将data1按照data2的时间匹配对应日期的值,自动广播为和data2完全一致的维度
data1_aligned = data1.sel(time=data2.time.dt.floor("D"))

# 第三步:直接相乘,输出结果维度和data2完全一致
result = data1_aligned * data2

可选groupby实现方案

如果需要更明确的按日分组运算逻辑,可以用groupby实现:

result = data2.groupby(data2.time.dt.floor("D")).map(
    lambda day_slice: day_slice * data1.sel(time=day_slice.time.dt.floor("D").iloc[0])
)

注意事项

  • 需保证两个DataArray的时间时区一致,不存在偏移,否则日期取整会出现匹配错误
  • 如果存在个别日期缺失的情况,可以在sel方法中添加参数method="nearest"做最近邻匹配,避免索引报错
  • 两种方案输出结果的维度均为(time: 224, latitude: 137, longitude: 261),完全符合需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 03:39:02