2017-04-02 237 views
3

我正在使用numpy,並且想要計算ndarray的協方差矩陣。我正在嘗試使用numpy.cov(),但沒有得到正確的結果。以下更多細節。Numpy協方差矩陣numpy.cov

我的ndarray是768x8,其中8是數據集中的數字要素。當我使用MATLAB來計算協方差矩陣時,我得到一個8x8(這是我所需要的),但是當我使用np.cov()時,我得到一個不正確的768x768。我嘗試將rowvar參數更改爲true,這不起作用。

對numpy.cov()的正確調用是什麼?換句話說,我將如何使用numpy重現MATLAB的cov()結果。

回答

8

令人驚訝的是,documentation可能會告訴你。您應該通過rowvar=False來指示列代表變量。

>>> data.shape 
(768, 8) 
>>> numpy.cov(data, rowvar=False).shape 
(8, 8) 
+0

謝謝你指出這一點。我沒有參考文檔,但沒有意識到rowvar的默認值是True(而不是False)! – user152945

+0

如果轉置傳遞給numpy.cov,它應該產生8 X 8矩陣。 – user3341078