Корреляция Numpy Arrays
У меня есть две переменные в виде числовых массивов, и я хочу вычислить корреляцию Пирсона между ними. В моем случае корреляция по времени, где каждый массив является шагом по времени.
Например:
Корреляция Пирсона между 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 ответ
Извините, мистер Э, если мне не ясно
Мои размеры массивов:
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