2014-01-09 43 views
0

我有一个输出看起来像这样:绘制一个稀疏矩阵与Python中的列表?

(1, 0) 5.15280812642e-42 
(2, 0) -6.31593498364e-35 
(3, 0) 4.1137215863e-33 
(4, 0) 4.11347362121e-33 
(5, 0) 1.15690910918e-33 
(6, 0) 2.14943418749e-33 
    : : 
(4498, 0) 4.16882551974e-30 
(4499, 0) 4.16882551974e-30 
(4500, 0) 4.16882551114e-30 
(4501, 0) 4.16882786295e-30 

的情况下,会很容易,如果我能稀疏矩阵转换为包含所有浮点数的列表。因此,我用

output = [ output[i][0] for i in range(0,4502)] 
plt.plot(t,output) 

其中t为[0,1,2,3 .... 4501] 不过,这并不work.Is一个更好的方法来绘制这些DATAS?谢谢。

+0

您可以生成一个可重现的数据示例(生成它的代码,即?) –

+0

您正在使用'scipy.sparse'还是其他?如果你使用'scipy.sparse',它是什么类型的稀疏矩阵? (即CSR,CSC,DOK,LIL等)大多数稀疏矩阵类型可以让你执行plot(sparse_array [:,0])并得到你想要的结果。 –

+0

我使用sparse.csr_matrix来创建一个稀疏矩阵。 –

回答

0

你的输出素材太短,len(output) == 4999。 Matplotlib不会那样。我认为对于稀疏矩阵和结果向量都使用相同的名称output是一个糟糕的主意。

0

就放弃对整数索引的t,matplotlib地块反正:

plt.plot([ output[i][0] for i in range(0,4999)])

,或者如果你真正的意思绘制整个事情:

plt.plot([output[i][0] for i in range(len(output)))

以上pythonically

plt.plot([i[0] for i in output])