14

我一直在将 isomap 算法的代码从 MATLAB 移植到 Python。我正在尝试使用 spy 函数来可视化稀疏模式。

MATLAB 命令:

spy(sparse(A));
drawnow;

蟒蛇命令:

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

我无法使用上述命令在 Python 中重现 MATLAB 结果。以非稀疏格式仅使用带有 A 的命令给出了与 MATLAB 非常相似的结果。但这需要很长时间(A 是 2000 到 2000 年)。scipy 的稀疏函数的 MATLAB 等价物是什么?

4

3 回答 3

19

也许是你的版本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__

这给出了这个情节:在此处输入图像描述

于 2013-09-06T07:55:20.040 回答
6

我刚刚发布了betterspy,可以说它在这里做得更好。安装

pip install betterspy

并运行

import betterspy
from scipy import sparse

A = sparse.rand(20, 20, density=0.1)
betterspy.show(A)
betterspy.write_png("out.png", A)

在此处输入图像描述

于 2018-04-17T15:26:17.870 回答
5

使用较小的标记:

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()
于 2014-10-20T12:18:06.537 回答