Python:找到Nx2矩阵的协方差矩阵

时间:2014-02-12 23:39:56

标签: python matrix covariance

我正在尝试用手计算一个名为X的Nx2矩阵的协方差矩阵(我知道有一个cov()函数,但我想手动计算它)。 我试图实现的代码是:

N=len(X)
S=numpy.zeros(2*2).reshape((2,2))
sumx=numpy.zeros(N*2).reshape((N,2))
b1=numpy.zeros(N*1).reshape((N,1))
b2=numpy.zeros(N*1).reshape((N,1))

for n in range(1,N):
    for i in range(0,N):
        b1[i]=(X[n,i]-mean(X[i,:]))

    for j in range(0,2):
        b2[j]=(X[n,j]-mean(X[:,j]))

    btot=b1v*b2v
    bsum=sum(btot)
    S=bsum/(N-1)
print S

但这不起作用!对不起,我对python很新,所以我错了可能很简单。

错误引发了

b1[i]=(X[n,i]-mean(X[i,:]))

IndexError: index 2 is out of bounds for axis 1 with size 2

更新:

其中X沿着以下几行:

[[  1.89235582e-01   1.91920908e+01]
 [  6.53377180e-02   1.78733112e+01]
 [  7.71620860e-02   1.79439764e+01]
 [  8.69048860e-02   1.80507024e+01]
 [  1.94832532e-01   1.85183166e+01]
 [  1.84917732e-01   1.86287646e+01]
  ...]

1 个答案:

答案 0 :(得分:1)

您在下一行中缺少右括号:

b1=(X[n,i]-mean(X[i,:])

同样在这一行:

b2=(X[n,j]-mean(X[:,j])

当您在给定行上出现语法错误时,通常最好在上一行中查找未闭合的分隔符(引号,括号,大括号等)。