Numpy数组相关性

1 投票
1 回答
1950 浏览
提问于 2025-05-01 07:17

我有两个变量,它们是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

撰写回答