2017-04-02 235 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