基于xarray.DataArrays统计非洲格点的显著正负相关模型数量
格点显著相关模型数量统计实现方案
核心思路
先将多组相关系数、p值数据合并为带模型维度的统一数据集,再通过布尔条件筛选显著相关的格点,最后沿模型维度统计数量。
具体步骤与代码
- 合并数据集
将三个相关系数数组和对应的p值数组分别合并,新增model维度区分不同模型:
import xarray as xr # 合并相关系数,添加model维度 combined_corr = xr.concat([ds1, ds2, ds3], dim="model") # 合并p值,保持相同的model维度 combined_p = xr.concat([ds1_p, ds2_p, ds3_p], dim="model") # 可选:给model维度添加明确标识(方便后续溯源) combined_corr = combined_corr.assign_coords(model=["model_1", "model_2", "model_3"]) combined_p = combined_p.assign_coords(model=["model_1", "model_2", "model_3"])
- 统计显著正相关模型数量
筛选出相关系数>0且p值<0.05的格点,沿model维度求和得到每个格点的显著正相关模型数:
sig_pos_count = ((combined_corr > 0) & (combined_p < 0.05)).sum(dim="model")
- 统计显著负相关模型数量
同理,筛选相关系数<0且p值<0.05的格点并求和:
sig_neg_count = ((combined_corr < 0) & (combined_p < 0.05)).sum(dim="model")
注意事项
- 确保三个原始数据集的空间维度(如lat、lon)完全匹配,若存在维度不一致,可先使用
xr.align(ds1, ds2, ds3, join="inner")对齐后再合并。 - 最终得到的
sig_pos_count和sig_neg_count均为与原始格点维度一致的DataArray,每个格点的值代表对应显著相关的模型数量(范围0-3)。
内容的提问来源于stack exchange,提问作者Jessica
相关产品推荐
相关产品推荐

