【问题标题】:scipy sparse matrix indicesscipy 稀疏矩阵索引
【发布时间】:2012-01-15 05:28:52
【问题描述】:

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

【问题讨论】:

    标签: numpy scipy


    【解决方案1】:

    因为a[1,:] 是一个有一行的稀疏矩阵(与原来的a 不同),而您正在打印它的第一行(也是唯一一行)。

    【讨论】:

    • 为了比较,请尝试:print a 查看所有条目(即稀疏矩阵的第 0 行和第 1 行a
    【解决方案2】:

    这可能是列表稀疏数组列表背后发生的事情的产物。如果您打印整个数组,则索引是正确的,但如果您在行上切片,则会得到相对索引。看看吧:

    >>> 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 确实响应迅速。

    【讨论】:

      猜你喜欢
      • 2021-10-30
      • 1970-01-01
      • 1970-01-01
      • 2011-09-18
      • 2017-03-26
      • 2017-03-31
      • 2023-04-10
      • 2019-12-03
      • 2013-01-07
      相关资源
      最近更新 更多