假设我有两个长度为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]])
Run Code Online (Sandbox Code Playgroud)
使用rowvar标志也无济于事 - 我得到了完全相同的结果.
>>> np.cov(x,y,rowvar=0)
array([[ 0.77568388, 0.15568432],
[ 0.15568432, 0.73839014]])
Run Code Online (Sandbox Code Playgroud)
如何获得25x25协方差矩阵?
我有一个稀疏矩阵(x)和一个数组(y).我想计算矩阵中每列与数组之间的相关性.下面显示的是一种非常简单的方法,这种方法很慢.我希望有人会有更快/更好的方法.
import numpy as np
from scipy.sparse import rand as r1
from numpy.random import rand as r2
np.random.seed(1000)
nrow,ncol = 50000,4000
x = r1(nrow, ncol, format='csr', density=.05)
y = (r2(nrow)<=.6).astype(int)
correl = [(n,np.corrcoef(np.asarray(x[:,n].todense()).reshape(-1), y)[0,1]) for n in xrange(ncol)]
print correl[:10]
Run Code Online (Sandbox Code Playgroud)