python - 具有两个具有 nan 值的数组的 Pearsonr
问题描述
我有两个数组,其值对应于一年中的日期。当两个数组都有值时,我试图找到数组 a 和 b 之间的相关系数。两个数组的许多值都是 nan。
from scipy import stats
import numpy as np
dates = np.array([2/3, 2/4, 2/5, 2/8, 2/9, 2/10, 2/11])
a = np.array([-9999., 4, 6, 7, -9999., 8, -9999.])
b = np.array([3, -9999., 5, 8, -9999., 7, 9])
a[a==-9999] = np.nan
b[b==-9999] = np.nan
r,p= stats.mstats.pearsonr(a,b)
在这种情况下,只有第 2、第 3 和第 5 个索引可以用于此计算,因为两个数组都没有 nan 值。我已经想出了如何删除 nans,但是当我这样做时,会弄乱索引。所以它对我没有用。
解决方案
我只是将两个数组组合成一个数组:
c = np.vstack([a,b])
>>> array([[nan, 4., 6., 7., nan, 8., nan],
[ 3., nan, 5., 8., nan, 7., 9.]])
删除任何包含任何 NaN 的列
d = c[:,~np.any(np.isnan(c), axis=0)]
>>> array([[6., 7., 8.],
[5., 8., 7.]])
然后使用 scipy 计算相关性:
r,p= stats.mstats.pearsonr(d[0],d[1])
>>> 0.6546536707079772 0.54562894834299
或麻木:
np.correlate(d[0],d[1])
>>> 0.654653670707977
推荐阅读
- google-apps-script - 将值从一张表复制到另一张表
- javascript - 无法在 React 上加载 javascript 组件文件
- rest - 可通过 API 调用访问的加密密码,这安全吗?
- fullcalendar - 如何在 FullCalendar 议程视图中隐藏空行?
- powershell - 单一 SMTP 报告
- python - pandas 使用列拆分作为新索引设置索引
- docker - 如何在 mesos/docker 上使用本地应用程序脚本和 spark-submit?
- reactjs - 反应:我想将我的添加组件表单输入发送到我的浏览组件以供查看
- android - 应用内存消耗
- linux - 如何在高山内进行 sudo?