2011-12-07 120 views
0

當我在稀疏矩陣中打印第二行的值時,我注意到第一個索引是0而不是1.請參見下面的示例。這是爲什麼?scipy稀疏矩陣索引

>>> from scipy.sparse import * 
>>> a=lil_matrix((100,100)) 
>>> a[0,0]=5 
>>> a[0,1]=6 
>>> a[0,20]=9 
>>> print a[0,:] 
(0, 0) 5.0 
(0, 1) 6.0 
(0, 20) 9.0 
>>> a[1,5]=55 
>>> a[1,50]=99 
>>> print a[1,:] 
(0, 5) 55.0 
(0, 50) 99.0 

回答

1

a[1,:]由於是一個稀疏矩陣與一個行(相對於原始a)和要打印它的第一(只)行。

+0

爲了進行比較,嘗試:'打印一個'來查看所有的條目(即在第0行和第1行爲稀疏矩陣'a') – dtlussier

0

這可能是發生在列表稀疏數組列表下面的事件的人工產物。如果你打印整個數組的索引是正確的,但如果你在行上切片,你會得到相對索引。檢查出來:

>>> print a 
    (0, 0) 5.0 
    (0, 1) 6.0 
    (0, 20) 9.0 
    (1, 5) 55.0 
    (1, 50) 99.0 
>>> print a[1,:] 
    (0, 5) 55.0 
    (0, 50) 99.0 

我沒有引擎蓋下看弄清楚爲什麼發生這種情況,但如果你真的需要知道,numpy的/ SciPy的mailing lists真的響應。