在python中用字典创建一个矩阵,带有标记的列和行

时间:2014-02-20 20:10:48

标签: python arrays dictionary numpy matrix

目前我的字典看起来像这样:

{'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 个答案:

答案 0 :(得分: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()