2013-09-06 8 views
5

Я портировал код для алгоритма isomap от MATLAB до Python. Я пытаюсь визуализировать шаблон разреженности, используя функцию шпиона.scipy эквивалент для MATLAB spy

команды MATLAB:

spy(sparse(A)); 
drawnow; 

команда Python:

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

Я не в состоянии воспроизвести результат MATLAB в Python, используя приведенную выше команду. Использование команды с только A в не разреженном формате дает аналогичный результат MATLAB. Но он занимает довольно много времени (A 2000-к-2000). Каким будет эквивалент MATLAB для разреженной функции для scipy?

ответ

11

Возможно, это ваша версия matplotlib, что создает проблемы, так как для меня scipy.sparse и matplotlib.pylab хорошо работают вместе.

См. Пример кода, который создает сюжет «шпион».

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__ 

Это дает этот сюжет: enter image description here

+0

Спасибо. Я понял, что ошибка была в моем коде для создания матрицы A в Python. Один быстрый вопрос. Полученные синие квадраты - это неправильные нули? – Nitin

+0

Да, вы правы. – Jan

2

с меньшими маркерами:

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() 
Смежные вопросы