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

如何基于xarray月度均值掩码数组计算生物度日指数所需年度总和

解决方案

问题原因

你调用numpy的ma模块方法处理xarray的DataArray对象后,返回的是numpy masked array类型,丢失了xarray对象的元数据和内置方法,所以无法再调用resample等xarray专属方法。

正确实现方式

直接使用xarray内置的.where()方法完成区间过滤,全程保留xarray对象结构,符合Python生态的通用实现逻辑:

import xarray as xr
import numpy as np

# 1. 定义温度阈值(单位:开尔文,和TG数据集单位对齐)
low_thresh = 7 + 273.15
high_thresh = 33 + 273.15

# 2. 计算月度均值(和原有逻辑一致)
monmean = ds.TG.resample({"time":"1MS"}).mean()

# 3. 区间过滤:区间外值设为NaN,自动保留DataArray完整结构
masked_monmean = monmean.where((monmean >= low_thresh) & (monmean <= high_thresh))

# 4. 年度重采样求和,xarray的sum方法默认自动忽略NaN
ymonmeansum = masked_monmean.resample({'time':'YS'}).sum()

可选优化

如果后续需要兼容numpy masked array相关操作,同时保留xarray结构,可以在过滤后按需调用.to_masked_array()方法,需要调用xarray方法时直接操作原masked_monmean对象即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 07:09:04