python - 如何计算两个 N 维 xarray 的 Pearson 相关性?
问题描述
我有两个 netcdf 文件,作为 xarrays 导入(请参见下面的摘要图像),其中包含非洲的季节性降水数据(纬度、经度、季节、降水)(重新网格化到同一网格)。我想通过计算要在泰勒图中(每个季节)使用的皮尔逊相关系数(模式相关性)来比较每个季节。我试过 numpy's corrcoef
,但这会返回一个矩阵,我需要一个值。我也尝试过 scipy pearsonsr
,但它会引发错误(具有多个元素的数组的真值不明确。使用 a.any() 或 a.all())。我是 python 和 netcdf 文件的新手,因此不胜感激。
文件1:
<xarray.DataArray 'pre' (season: 4, lat: 162, lon: 162)>
array([[[ nan, nan, nan, ..., nan,
nan, nan],
[ nan, nan, nan, ..., nan,
nan, nan],
[ nan, nan, nan, ..., nan,
nan, nan],
...,
[ nan, nan, nan, ..., 21.462164 ,
21.921623 , 20.583786 ],
[ nan, nan, nan, ..., 22.240545 ,
21.24054 , 21.135136 ],
[ nan, nan, nan, ..., 20.78919 ,
20.45946 , 18.62973 ]]], dtype=float32)
Coordinates:
* lon (lon) float64 -20.25 -19.75 -19.25 -18.75 ... 59.25 59.75 60.25
* lat (lat) float64 -40.25 -39.75 -39.25 -38.75 ... 39.25 39.75 40.25
* season(season) object 'DJF' 'JJA' 'MAM' 'SON'
文件2:
<xarray.DataArray 'tp' (season: 4, lat: 162, lon: 162)>
array([[[ nan, nan, nan, ..., nan,
nan, nan],
[ nan, nan, nan, ..., nan,
nan, nan],
[ nan, nan, nan, ..., nan,
nan, nan],
...,
[ nan, nan, nan, ..., 21.7096725 ,
21.09724263, 19.69123712],
[ nan, nan, nan, ..., 21.2375123 ,
20.71120389, 20.73519617],
[ nan, nan, nan, ..., 20.80748653,
19.70237051, 18.9941896 ]]])
Coordinates:
* lon (lon) float64 -20.25 -19.75 -19.25 -18.75 ... 59.25 59.75 60.25
* lat (lat) float64 -40.25 -39.75 -39.25 -38.75 ... 39.25 39.75 40.25
* season(season) object 'DJF' 'JJA' 'MAM' 'SON'
解决方案
如果您只是在一个数组和另一个数组之间的所有值中寻找单个相关系数,请尝试展平数组,然后从对角线上获取其中一个值(例如[0, 1]
)。:
>>> res = np. corrcoef(arr1.values.flat, arr2.values.flat)
>>> res
array([[1. , 0.9985713],
[0.9985713, 1. ]])
>>> res[0, 1]
0.9985713
corrcoef
总是返回一个数组,给出与数组的每个切片相关的相关性,但如果您正在寻找两者中所有元素的相关性,那么您需要将它们重塑为向量。
推荐阅读
- c# - 如何设置字符串 Setting.Default = Application.StartupPath 以便首次打开时?
- java - Android Studio 复选框
- mysql - 错误代码:1093。您不能在 FROM 子句中指定目标表“表”进行更新
- c++ - C++ 继承与 std::vector 中的模板
- angularjs - 如何在angularJS中使用ng-route制作动态网页
- java - 循环播放音频android studio
- python - 在 XGBoost 中为可视化指定特征名称列表时,为什么会出现“ValueError: feature_names mismatch”?
- linux - 从 GitHub 迁移到 GitLab(作为 POSIX 环境中的遥控器)
- ajax - Primefaces 组件在 ajax 事件期间未更新
- c++ - 错误:哈希函数必须可以使用键类型的参数调用