所以这就是我遇到的问题。我有一堆大数据矩阵~500 x 30000.我需要计算Pearson相关系数,如果它有一个重要的p值。 scipy.stats.pearsonr
不处理矩阵所以我编写了以下函数来计算相关性和p值矩阵:
import numpy as np
from scipy import stats
def corr_mat(X):
N=X.shape[1]
rho=np.empty((N,N), dtype=float)
pval=np.empty((N,N), dtype=float)
for i in range(N):
v1=X[:,i]
for j in range(i,N):
v2=X[:,j]
C,P=stats.pearsonr(v1,v2)
rho[i,j]=C
rho[j,i]=C
pval[i,j]=P
pval[j,i]=P
return rho,pal
适用于小型婚姻,但对于我正在计算的大型矩阵需要永远。它也使我的电脑崩溃了几次,所以就有了。我想知道是否有更好的做法。我想我可能不得不在cython中这样做以加快循环但我猜我可以不再使用scipy中的内置stats包并且可能必须使用GNU库来获取C而我不是确定这是多么容易,因为我的c编程仍然相当简陋(大多数情况下我不知道如何在c中处理大型矩阵)任何帮助都将不胜感激。