我一直在将用于isomap算法的代码从MATLAB移植到Python。我试图使用间谍功能可视化稀疏模式。
MATLAB命令:
spy(sparse(A));
drawnow;
Python命令:
matplotlib.pyplot.spy(scipy.sparse.csr_matrix(A))
plt.show()
我无法使用上述命令在Python中重现MATLAB结果。使用仅具有非稀疏格式的A的命令可以得到与MATLAB非常相似的结果。但这需要很长时间(A为2000×2000)。对于scipy来说,MATLAB的稀疏函数是什么?
答案 0 :(得分:16)
也许这是你的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__
这给出了这个图:
答案 1 :(得分:3)
使用较小的标记:
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()
答案 2 :(得分:2)
我刚刚发布了betterspy,这可以说在这里做得更好。使用
安装pip install betterspy
并使用
运行import betterspy
A = sparse.rand(20, 20, density=0.1)
betterspy.show(A)
betterspy.write_png(A, 'out.png')