パイソンの2.7、64BITでnumpyの演算を行ったところ、やたら時間(2000秒)がかかりました。演算時のパソコン内のメモリを確認したところ、16GBあるところ、9GBの使用(うちバックグラウンドで5GB使用していたのでパイソン自体は4GB程度)で止まっていました。16GBあるので、更に使用した方が早くなると思うのですが、どのようにすれば、パイソンに使用するメモリを上げることができるでしょうか?それとも、メモリは関係なく、演算が遅かったのでしょうか?確認したところ、演算で遅いところは、
np.linalg.eigvalsh
の演算で、巨大な行列の固有値を求めるところでした。
何か解決策があれば教えてください。
import numpy as np
print "Finished Importing Numpy"
import re #regular expression
print "Finished Importing Regex"
import struct
print "Finished Importing Struct"
from collections import Counter
print "Finished Importing Counter"
import time
class Factoranalysis:
def init(self,dataarr):
print "StartinitFA"
self.dataarr=dataarr
self.numval=dataarr.shape[0]
self.numobs=dataarr.shape[1]
print "FAinitFIN"
def eigenvals(self):
print "eigenvals"
la = np.linalg.eigvalsh(np.corrcoef(self.dataarr))#np.corrcoef(self.dataarr)#
return la
def parallelanalysis(self,repnum):
laave=0.
for num in range(0,repnum):
print laave
laave = np.linalg.eigvalsh(np.corrcoef(np.random.randn(self.numval,self.numval))) + laave
return laave/repnum
if name == 'main':
laave=0.
for num in range(0,100):
U, s, V = np.linalg.svd(np.corrcoef(np.random.randn(100,100)))
laave = laave + s
print laave/100
回答1件
あなたの回答
tips
プレビュー