numpy协方差矩阵

2024-05-19 03:02:35 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有两个长度为25的向量,我想计算它们的协方差矩阵。我试着用numpy.cov做这个,但总是以2x2矩阵结束。

>>> import numpy as np
>>> x=np.random.normal(size=25)
>>> y=np.random.normal(size=25)
>>> np.cov(x,y)
array([[ 0.77568388,  0.15568432],
       [ 0.15568432,  0.73839014]])

使用rowvar标志也没有帮助-我得到了完全相同的结果。

>>> np.cov(x,y,rowvar=0)
array([[ 0.77568388,  0.15568432],
       [ 0.15568432,  0.73839014]])

如何得到25x25协方差矩阵?


Tags: importnumpysize标志asnp矩阵random
3条回答

阅读文档时

>> np.cov.__doc__ 

或者看Numpy Covariance,Numpy将数组的每一行作为一个单独的变量,因此有两个变量,因此得到一个2x 2协方差矩阵。

我认为上一篇文章有正确的解决方法。我有解释:-)

你有两个向量,不是25。我所在的计算机没有python,因此我无法测试,但请尝试:

z = zip(x,y)
np.cov(z)

当然。。。。你真正想要的可能是:

n=100 # number of points in each vector
num_vects=25
vals=[]
for _ in range(num_vects):
    vals.append(np.random.normal(size=n))
np.cov(vals)

这取num_vects1xn向量的协方差(我想/希望)

试试这个:

import numpy as np
x=np.random.normal(size=25)
y=np.random.normal(size=25)
z = np.vstack((x, y))
c = np.cov(z.T)

相关问题 更多 >

    热门问题