【问题标题】:Numpy Arrays CorrelationNumpy 数组相关性
【发布时间】:2014-11-03 12:10:00
【问题描述】:

我有两个变量作为 numpy 数组,我想计算 Pearson 之间的相关性。在我的情况下,相关性是随着时间的推移,每个数组都是一个时间步长。

例如:

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]]]

【问题讨论】:

  • 我试试这个,但它是针对一维数组的。
  • 你能用可复制的代码展示你想要的例子吗?
  • 至少对我来说,很难准确说出你想要的结果。尝试编写一个简短的示例,在其中以“丑陋的方式”计算您想要的结果,例如通过手动循环并每次调用 scipy 函数。 Make it copyable 正如前面的评论所说,这意味着添加导入语句、硬编码一些数据或使用 np.random 例程之一随机生成数据等。这是获得出色答案的最佳方式。

标签: python arrays numpy correlation


【解决方案1】:

对不起,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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-24
    • 2021-06-05
    相关资源
    最近更新 更多