Numpy数组相关性
我有两个变量,它们是numpy数组,我想计算它们之间的皮尔逊相关系数。在我的情况下,这个相关性是随着时间变化的,每个数组代表一个时间点。
举个例子:
计算x[0, 0, 0]和y[0, 0, 0]之间的皮尔逊相关系数,x[1, 0, 0]和y[1, 0, 0]之间的相关系数……
对每一个元素都这样计算。
最后,我会得到一个包含相关性结果的数组。
我的数组是:
>>> print x
[[[ 0 1]
[ 2 3]
[ 4 5]
[ 6 7]]
[[ 8 9]
[10 11]
[12 13]
[14 15]]
[[16 17]
[18 19]
[20 21]
[22 23]]]
>>> print y
[[[10 11]
[12 13]
[14 15]
[16 17]]
[[18 19]
[20 21]
[22 23]
[24 25]]
[[26 27]
[28 29]
[30 31]
[32 33]]]
1 个回答
0
抱歉,Mr E,如果我之前没有说清楚。
我的数组的维度是:
print (x.shape)
x = (20, 21, 22)
print (y.shape)
y = (20, 21, 22)
所以,我通过下面的代码解决了我的问题。
如果有人有更好的主意,请告诉我!
import numpy as np
def corr_pearson(x, y):
"""
Compute Pearson correlation.
"""
x_mean = np.mean(x, axis=0)
x_stddev = np.std(x, axis=0)
y_mean = np.mean(y, axis=0)
y_stddev = np.std(y, axis=0)
x1 = (x - x_mean)/x_stddev
y1 = (y - y_mean)/y_stddev
x1y1mult = x1 * y1
x1y1sum = np.sum(x1y1mult, axis=0)
corr = x1y1sum/20.
return corr