2013-09-06 13 views
5

Ich habe Code für einen Isomap-Algorithmus von MATLAB zu Python portiert. Ich versuche das Sparsity-Muster mit der Spion-Funktion zu visualisieren.scipy Äquivalent für MATLAB Spion

MATLAB Befehl:

spy(sparse(A)); 
drawnow; 

Python-Befehl:

matplotlib.pyplot.spy(scipy.sparse.csr_matrix(A)) 
plt.show() 

Ich bin nicht in der Lage, das MATLAB Ergebnis in Python zu reproduzieren den obigen Befehl verwenden. Die Verwendung des Befehls mit nur A im Nicht-Sparse-Format ergibt ein ziemlich ähnliches Ergebnis wie MATLAB. Aber es dauert ziemlich lange (A ist 2000 von 2000). Was wäre das MATLAB-Äquivalent einer Sparse-Funktion für scipy?

Antwort

11

Vielleicht ist es Ihre Version von matplotlib, die Probleme macht, wie für mich scipy.sparse und matplotlib.pylab gut zusammenarbeiten.

Siehe den folgenden Beispielcode, der das angehängte Spionagediagramm erstellt.

import matplotlib.pylab as plt 
import scipy.sparse as sps 
A = sps.rand(10000,10000, density=0.00001) 
M = sps.csr_matrix(A) 
plt.spy(M) 
plt.show() 

# Returns here '1.3.0' 
matplotlib.__version__ 

Das gibt diesen Plan: enter image description here

+0

Dank. Ich fand heraus, dass der Fehler in meinem Code für das Erstellen der A-Matrix in Python war. Eine kurze Frage. Die erzeugten blauen Quadrate sind die Nicht-Nullen richtig? – Nitin

+0

Ja, Sie haben Recht. – Jan

2

Bei kleineren Markierungen:

import matplotlib.pylab as pl 
import scipy.sparse as sps 
import scipy.io 
import sys 
A=scipy.io.mmread(sys.argv[1]) 
pl.spy(A,precision=0.01, markersize=1) 
pl.show()