2017-09-13 13 views
0

저는 N 명의 개인을 통해 혁신의 확산을 반영하는 모델을 연구 중입니다. 인접한 행렬 A의 크기가 NxN인데이 인접 행렬은 희소합니다.최대 크기 희소 행렬 NumPy

NxN=10^7에 대한 시뮬레이션을 수행하고 싶습니다. 나는 처음 Matlab을 시도했지만, 불행히도 Matlab은 NxN>10^4을 처리 할 수 ​​없다.

내 시뮬레이션에 NumPy를 사용할 수 있습니까? Scipy가 N으로되는 N × N 스파 스 매트릭스를 처리 할 수 ​​

+0

Numpy와 Matlab은 매우 유사한 C 루틴을 후드에서 작동합니다. Matlab이 그것을 처리 할 수 ​​없다면, 나는 심각하게 numpy 수 있습니다 의심하고 있습니다. 큰 데이터 도구를 사용하여 대안을 살펴보십시오. PySpark는 시작하는 것이 좋다. –

+0

N * N = 10^14 ......... 아마도 다른 표현이 필요할 것입니다. 스파 스 매트릭스에는 몇 명의 개인이 있습니까? –

+0

이 링크를 따르십시오 https://stackoverflow.com/questions/14525344/whats-the-maximum-size-of-a-numpy-array – amrit

답변

1

= 10^7

import scipy.sparse as sparse 
N = 10e7 
sparse.bsr_matrix((N, N)) 

출력 : 그것은 당신의 시뮬레이션에 적합한 지

<100000000x100000000 sparse matrix of type '<class 'numpy.float64'>' 
    with 0 stored elements (blocksize = 1x1) in Block Sparse Row format> 

우리가 그렇지 않은 것들의 수에 따라 달라집니다 알고있다. 다른 sparse matrix class을 사용해야 할 수도 있습니다.

+0

'scipy.sparse'는 요소 인덱스를 정수로 저장합니다. 더 작은 행렬의 경우에는'np.int32'를 사용하지만 필요할 경우'np.int64'를 사용할 수 있습니다. 따라서 매우 큰 모양이 가능합니다. 그러나 0이 아닌 요소의 수는 메모리에 의해 제한됩니다. 매우 드문 경우가 아니면 밀도가 높은 배열에 비해 계산 속도가 느려집니다. – hpaulj