2014-10-09 62 views
0

這可能有一個簡單的答案,但我無法理解它。
我將如何去尋找嵌套列表的協方差矩陣?
爲了舉例說明:
NUMPY:嵌套列表的協方差矩陣

list = [[list1],[list2],[list3],...,[listn]] 

我想找到所有列表元素的協方差矩陣。
我目前有一個包含98個嵌套列表的列表,我需要找到
協方差矩陣。
謝謝。

+0

只要做'numpy.cov(my_lists)'。 – Akavall 2014-10-09 21:31:46

+0

是的,這是我的原始思路,但是當我運行:np.cov([[list1],[list2],[list3],...,[listn]])我得到一個「ValueError:設置一個數組元素與序列。「並且爲每個列表輸入索引不是一個選項,因爲協變的主列表內的列表數目可能會改變,並且對於這種「手動」方法而言相當大。 – 2014-10-09 22:22:59

+0

當時你在使用哪個版本的numpy?這適用於v 1.13.1。 – PaulG 2017-10-06 01:16:28

回答

1

我想出了唯一可行的解​​決辦法是以下內容:

covar = [[np.cov(frames[n], frames[i])[0][1] for n in range(len(frames))] for i in range(len(frames))] 

可變幀是其中包含該數據的其他列表嵌套列表。
有人請糾正我,如果我的解決方案是跛腳。
路易斯

編輯1:我知道我應該設定的範圍含有可變量(LEN(幀)),但爲了清楚起見
目的我選擇不。

編輯2:我剛剛找到一段代碼解決了我的問題!

frames = np.asarray(frames) 
covar = np.cov(frames) 

快了很多......而且更乾淨!