Scipy эквивалент для шпиона MATLAB
Я портировал код для алгоритма isomap из MATLAB в Python. Я пытаюсь визуализировать шаблон разреженности с помощью функции 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?
Ответы
Ответ 1
Может быть, ваша версия 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]()
Ответ 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()
Ответ 3
Я только что выпустил Betterspy, который, возможно, делает лучше здесь. Установить с
pip3 install betterspy --user
и беги с
import betterspy
from scipy import sparse
A = sparse.rand(20, 20, density=0.1)
betterspy.show(A)
betterspy.write_png("out.png", A)
![enter image description here]()