2014-02-20 87 views
2

目前我有一本字典,看起来是这样的:创建矩阵出Python中的字典,标记列和行

{'a':[1,2,3,0,0],'b':[1,5,2,1,4], 'c':[1,2,4,12,1]} 

我试图创建一个协方差矩阵出这本字典。我已经有一个定义的协方差函数,从而理想地输出将看起来像这样(与键作为标签的行和列一起):

a b c 
a 
b 
c 

第i行第j列输出会召唤协方差函数和具有键i的值(矢量)和键j的值(矢量)作为其输入。例如:

covariance([1,5,2,1,4],[1,2,4,12,1]) 

我在做这样的事情现在就打印出所有的协方差,但我宁愿它以矩阵的形式:

keys=dictionary.keys() 
values=dictionary.values() 
for counter in range(len(values)-1): 
    print keys[counter]-1 + '&' + keys[counter] + ':' + covariance(values[counter-1],values[counter]) 
    counter+=1 

这给了我:

a & b: 0.10 
b & c: 0.20 

但有&ç

任何帮助,没有任何关联,将不胜感激。谢谢。

回答

1

有时,神奇的numpy,scipy和Pandas家族来拯救。 在这个以快刺,你可以尝试像

import pandas as pd 
df = pd.DataFrame({'a':[1,2,3,0,0],'b':[1,5,2,1,4], 'c':[1,2,4,12,1]}) 
covariance = df.cov() 
+0

任何特别的原因-1?我一直使用这样的熊猫来进行主成分分析。它快速,简洁和广泛使用。 – Will

+0

+1无法解释-1(并声称这是NAA)。这是*答案,numpy没有标记行/列的概念。 –