我正在尝试手动计算名为 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]
...]
您在以下行中缺少右括号:
b1=(X[n,i]-mean(X[i,:])
同样在这一行:
b2=(X[n,j]-mean(X[:,j])
当您在给定行上遇到语法错误时,最好在上一行上查找未闭合的分隔符(引号、括号、大括号等)。