SciPy binned_statistic_2d返回3D统计结果是否为预期输出?
关于SciPy
binned_statistic_2d() 输出维度异常的问题分析 场景回顾
- 处理Xarray Dataset中的三个138元素向量:
cloudcorrLTSw.LTS、cloudcorrLTSw.OMEGA_700作为分箱维度,cloudcorrLTSw.CLD_RHO作为待统计变量 - 分箱设置:取LTS和OMEGA_700的每隔5个值作为分箱边界,28个边界对应27个分箱区间
- 因数据稀疏含大量NaN,使用
np.nanmean作为统计函数
异常输出原因
binned_statistic_2d()的设计逻辑是接受一维NumPy数组作为输入,正常返回形状为(nx, ny)的统计结果数组。你得到的138x27x27异常维度,本质是传入的Xarray变量未被正确转换为纯一维数组,保留了原Dataset的维度结构,导致函数误将额外维度纳入计算,最终生成带冗余维度的结果;而第一维全为NaN,是因为这些冗余维度上没有有效数据参与分箱统计。
验证结论
你切换到未构建Dataset的原始数据后得到合理结果,恰好印证了这一点:原始数据是纯NumPy一维数组,完全符合binned_statistic_2d()的输入要求,因此输出维度正确。
最终结论
这种带冗余维度的138x27x27输出不属于binned_statistic_2d()的预期正常输出,是输入数据格式(Xarray变量未正确扁平化)导致的异常结果。
内容的提问来源于stack exchange,提问作者Logan
相关产品推荐
相关产品推荐

