scipy稀疏矩阵指数

时间:2011-12-07 17:32:05

标签: numpy scipy

当我在稀疏矩阵中打印第二行的值时,我注意到第一个索引是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

2 个答案:

答案 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真的很敏感。