Я пытаюсь вычислить матрицу дисперсий Σ
по формуле Σ=E(XX^T)−μμ^T
.
Итак, я попробовал этот код ...
def fast_calc(X):
colsum=np.sum(X,axis=0)
X=X[:,colsum!=0]
return X.dot(X.T)
Y=np.empty([X.shape[0],X.shape[0]])
for i in range(X.shape[0]):
for j in range(i,X.shape[0]):
Y[i][j]=sum(X[i,:]*X[j,:])
Y[j][i]=Y[i][j]
return Y
Но это совсем не быстро ... есть ли способ вычислить его быстрее с помощью numpy / scipy ??