2012-03-12 18 views
3

私は大きな10^5×10^5つのスパース行列を使用しようとしているが、scipyのダウンロードに直面して実行されているように見えるんだ:scipyのダウンロード大型疎行列

n = 10 ** 5 
x = scipy.sparse.rand(n, n, .001) 

ValueError: Trying to generate a random sparse matrix such as the 
    product of dimensions is greater than 2147483647 - this is not 
    supported on this machine 

を取得し、誰もが、なぜ制限を知っています私はそれを避けることができますか? (fyi、私は4GBのメモリとenthoughtディストリビューションでMacBook Airを使用しています)

答えて

10

これは、scipy.sparse.rand()が実装されていることから生じる制限です。この制限を回避するために、独自のランダムマトリックス生成をロールバックすることができます。

n = 10 ** 5 
density = 1e-3 
ij = numpy.random.randint(n, size=(2, n * n * density)) 
data = numpy.random.rand(n * n * density) 
matrix = scipy.sparse.coo.coo_matrix((data, ij), (n, n)) 
関連する問題