【问题标题】:create a matrix out of a dictionary in python with labeled columns and rows在 python 中用带有标签的列和行的字典创建一个矩阵
【发布时间】:2014-03-22 00:35:54
【问题描述】:

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

{'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

但与 a & c 没有关联

任何帮助将不胜感激。谢谢。

【问题讨论】:

    标签: python arrays dictionary numpy matrix


    【解决方案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()
    

    【讨论】:

    • -1 有什么特别的原因吗?我一直使用这样的 Pandas 进行主成分分析。它快速、简洁且被广泛使用。
    • +1 无法解释 -1(并声称这是 NAA)。这是 the 答案,numpy 没有标记行/列的概念。
    猜你喜欢
    • 2011-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-14
    • 2022-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多