python中的相关矩阵

时间:2013-02-02 00:48:21

标签: python

如何在python中计算相关矩阵?我有一个n维向量,其中每个元素有5维。例如,我的矢量看起来像

[
 [0.1, .32, .2,  0.4, 0.8], 
 [.23, .18, .56, .61, .12], 
 [.9,   .3,  .6,  .5,  .3], 
 [.34, .75, .91, .19, .21]
] 

在这种情况下,向量的维数为4,并且该向量的每个元素具有5维。如何以最简单的方式构建矩阵?

由于

4 个答案:

答案 0 :(得分:29)

使用numpy,您可以使用np.corrcoef

In [88]: import numpy as np

In [89]: np.corrcoef([[0.1, .32, .2, 0.4, 0.8], [.23, .18, .56, .61, .12], [.9, .3, .6, .5, .3], [.34, .75, .91, .19, .21]])
Out[89]: 
array([[ 1.        , -0.35153114, -0.74736506, -0.48917666],
       [-0.35153114,  1.        ,  0.23810227,  0.15958285],
       [-0.74736506,  0.23810227,  1.        , -0.03960706],
       [-0.48917666,  0.15958285, -0.03960706,  1.        ]])

答案 1 :(得分:10)

如果您不想再次编写矩阵,也可以使用np.array。

import numpy as np
a = np.array([ [0.1, .32, .2,  0.4, 0.8], [.23, .18, .56, .61, .12], [.9,   .3,  .6,  .5,  .3],  [.34, .75, .91, .19, .21]]) 
b = np.corrcoef(a)
print b

答案 2 :(得分:1)

这是使用Python计算多个时间序列的相关矩阵的pretty good example。包含的源代码使用Pandas,NumPy和matplotlib计算一组外汇货币对的相关矩阵,以生成相关图。

样本数据是一组历史数据文件,输出是单个相关矩阵和图。代码记录很清楚。

答案 3 :(得分:0)

由于我几乎错过了@Anton Tarasenko的评论,因此我将提供一个新答案。所以给定你的数组:

a = np.array([[0.1, .32, .2,  0.4, 0.8], 
             [.23, .18, .56, .61, .12], 
             [.9,   .3,  .6,  .5,  .3],  
             [.34, .75, .91, .19, .21]]) 

如果我想假设尺寸(列)的相关矩阵,可以使用numpy(注意转置!):

import numpy as np
print(np.corrcoef(a.T))

或者如果您在熊猫中拥有它,

import pandas as pd
print(pd.DataFrame(a).corr())

两个都打印

array([[ 1.        , -0.03783885,  0.34905716,  0.14648975, -0.34945863],
      [-0.03783885,  1.        ,  0.67888519, -0.96102583, -0.12757741],
      [ 0.34905716,  0.67888519,  1.        , -0.45104803, -0.80429469],
      [ 0.14648975, -0.96102583, -0.45104803,  1.        , -0.15132323],
      [-0.34945863, -0.12757741, -0.80429469, -0.15132323,  1.        ]])