2017-09-13 8 views
0

Ich arbeite an einem Modell, das die Verbreitung von Innovationen durch eine Gesellschaft von N Einzelpersonen widerspiegelt. Ich habe eine Adjazenzmatrix A der Größe NxN, beachten Sie, dass diese Adjazenzmatrix ist spärlich.Maximale Größe spärliche Matrix NumPy

Ich möchte Simulationen für NxN=10^7 machen. Ich habe zuerst Matlab ausprobiert, aber leider kann Matlab nicht mit NxN>10^4 umgehen.

Kann ich NumPy für meine Simulationen verwenden?

+0

Numpy und Matlab arbeiten an sehr ähnlichen C-Routinen unter der Haube. Wenn Matlab nicht damit umgehen kann, bezweifle ich ernsthaft, dass es möglich ist. Bitte schauen Sie sich eine Alternative mit Big Data Tools an. PySpark ist ein guter Anfang. –

+0

N * N = 10^14 ......... Sie benötigen wahrscheinlich eine andere Darstellung; Wie viele Individuen gibt es in deiner kargen Matrix? –

+0

folgen Sie diesem Link https://stackoverflow.com/questions/14525344/whats-the-maximum-size-of-a-numpy-array – amrit

Antwort

1

Scipy können NxN dünn besetzte Matrizen mit N handle = 10^7

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

Ausgang:

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

Ob es für Ihre Simulationen hängt von einer Reihe von Dingen, geeignet ist, dass wir nicht kennt. Möglicherweise müssen Sie einen anderen sparse matrix class verwenden.

+0

'scipy.sparse' speichert Element-Indizes als Ganzzahlen. Bei kleineren Matrizen wird 'np.int32' verwendet, bei Bedarf kann jedoch' np.int64' verwendet werden. Das erlaubt sehr große Formen. Die Anzahl der von Null verschiedenen Elemente ist jedoch durch den Speicher begrenzt. Sofern nicht sehr spärlich, werden die Berechnungen im Vergleich zu dichten Arrays langsam sein. – hpaulj

Verwandte Themen