2014-02-20 84 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沒有標記行/列的概念。 –