Корреляция 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
Другие вопросы по тегам