24000 * 316 numpy マトリックスがあり、各行は 316 時点の時系列を表し、これらの時系列の各ペア間のピアソン相関を計算しています。結果として、ピアソン値を持つ 24000 * 24000 numpy 行列が得られることを意味します。私の問題は、これには非常に長い時間がかかることです。小さな行列 (200 * 200) でパイプラインをテストしましたが、動作します (まだ遅いですが)。これほど遅いと予想されるかどうか疑問に思っています(1日以上かかります!!!)。そして、それについて私ができること...これが私のコードであるのに役立つなら...特別なことや難しいことは何もありません..
def SimMat(mat,name):
mrange = mat.shape[0]
print "mrange:", mrange
nTRs = mat.shape[1]
print "nTRs:", nTRs
SimM = numpy.zeros((mrange,mrange))
for i in range(mrange):
SimM[i][i] = 1
for i in range (mrange):
for j in range(i+1, mrange):
pearV = scipy.stats.pearsonr(mat[i], mat[j])
if(pearV[1] <= 0.05):
if(pearV[0] >= 0.5):
print "Pearson value:", pearV[0]
SimM[i][j] = pearV[0]
SimM[j][i] = 0
else:
SimM[i][j] = SimM[j][i] = 0
numpy.savetxt(name, SimM)
return SimM, nTRs
ありがとう