ランダムなハッシュマップh:[n] - > [t]の疎行列表現を作成しようとしています。これは各iをを利用可能なd個の位置それらの場所の値は、いくつかの離散分布から引き出されます。ここでscipyの置換えなしでゆっくりランダムなサンプル生成
:param d: number of bins
:param n: number of items hashed
:param s: sparsity of each column
:param distribution: distribution object.
は私の試みです:
start_time=time.time()
distribution = scipy.stats.rv_discrete(values=([-1.0, +1.0 ], [0.5, 0.5]),name = 'dist')
data = (1.0/sqrt(self._s))*distribution.rvs(size=self._n*self._s)
col = numpy.empty(self._s*self._n)
for i in range(self._n):
col[i*self._s:(i+1)*self._s]=i
row = numpy.empty(self._s*self._n)
print time.time()-start_time
for i in range(self._n):
row[i*self._s:(i+1)*self._s]=numpy.random.choice(self._d, self._s, replace=False)
S = scipy.sparse.csr_matrix((data, (row, col)), shape = (self._d,self._n))
print time.time()-start_time
return S
今すぐnの= 500000このマップを作成するために、S = 10、D = 1000、それはここで、私のまともなワークステーション上で20代を中心に私を取っています行インデックスの生成には90%の時間がかかります。これをスピードアップするためにできることはありますか?他の選択肢はありますか?ありがとう。
ありがとう:
csr
にスパースrandom
は少しだけ遅くなります。はい、行インデックスを生成する時間は90%です。あなたはこれを助けることができるいくつかの他の選択肢について考えますか?これは私の目的にとっては遅すぎるということです。 – user1131274