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

重采样与数据集子集化后日均值计算时间维度为空问题求助

问题分析与解决方法

核心原因

你遇到的time维度变为0的问题,大概率是dropna的默认行为导致的:

  • dropna(dim='time')默认使用how='any'参数,意思是只要该时间点对应的空间数组中存在任意一个NaN值,就删除这个时间点。
  • 由于你用land_mask ==0掩膜了海洋区域,研究区内必然存在被设为NaN的海洋格点,因此每个日均值的数组里都包含NaN,最终所有时间点被全部删除。

解决方案

1. 修改dropna的how参数为'all'

只删除该时间点所有空间格点全为NaN的记录,保留那些至少有有效陆地区域数据的时间点:

dout = dm.resample(time='D').mean(dim="time").dropna(dim='time', how='all')

2. 验证land_mask的维度匹配性

确保land_mask已经和研究区的维度(longitude:101、latitude:109)一致,避免因维度不匹配导致意外的全NaN结果。建议先对land_mask做区域切片再进行掩膜:

# 先截取研究区对应的land_mask
land_mask_sub = land_mask.sel(longitude=slice(65,90), latitude=slice(35,8))
# 再执行筛选与掩膜
dm = ds.isel(time=(ds.time.dt.month == 5)).sel(longitude=slice(65,90), latitude=slice(35,8)).where(land_mask_sub == 0)

3. 分步验证中间结果

可以在每一步后检查数据情况,精准定位问题:

  • 执行dm.isnull().all(dim=['longitude','latitude']).sum(),查看有多少个小时的研究区数据全为NaN
  • 执行dm.resample(time='D').mean(dim="time").isnull().all(dim=['longitude','latitude']).sum(),查看有多少个日均时间点全为NaN

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 15:55:19