2014-01-09 71 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])