MATLAB间谍的scipy等价物

时间:2013-09-06 07:06:16

标签: python matlab scipy

我一直在将用于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的稀疏函数是什么?

3 个答案:

答案 0 :(得分:16)

也许这是你的matplotlib版本造成麻烦,对我来说scipy.sparsematplotlib.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

答案 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')

enter image description here