当我在稀疏矩阵中打印第二行的值时,我注意到第一个索引是0而不是1.请参阅下面的示例。那是为什么?
>>> 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
答案 0 :(得分:1)
因为a[1,:]
是一个包含一行的稀疏矩阵(与原始a
相对),并且您正在打印其第一行(也是唯一一行)。
答案 1 :(得分: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真的很敏感。