2011-12-07 246 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真的响应。