如何在Xarray中按月份提取数据并计算均值?
解决Xarray提取7月数据并计算均值的维度问题
问题根源
你用groupby(arr_c3.time.dt.month)后得到错误维度,是因为groupby是分组聚合工具,不是直接提取数据的正确方式,且后续操作可能误将lat和lon维度也做了均值计算,才会得到(755,1,1)的结果。
正确步骤
1. 提取所有7月的数据
直接通过时间维度筛选,保留完整的lat和lon维度:
# 筛选出所有7月的日期数据 july_data = arr_c3.sel(time=arr_c3.time.dt.month == 7)
此时july_data的维度应为(775, 101, 191)(25年×每年7月31天=775天,和你提到的755可能是日期范围的小误差,方法通用),完全匹配你需要的维度结构。
2. 计算均值(按需选择)
根据实际需求选择聚合维度:
- 每个经纬度点的所有7月数据均值(维度变为
(101,191)):july_mean = july_data.mean(dim='time') - 每年7月的经纬度均值(维度变为
(25,101,191)):annual_july_mean = july_data.groupby('time.year').mean(dim='time') - 每个7月日期的空间均值(若确实需要
(775,1,1)结构,可加keepdims=True):daily_july_spatial_mean = july_data.mean(dim=['lat', 'lon'], keepdims=True)
内容的提问来源于stack exchange,提问作者Sohaib
相关产品推荐
相关产品推荐

