1

我找不到有关 scipy.sparse 索引的更多信息,除了 SciPy v0.11 参考指南,它说

lil_matrix 类支持基本的切片和花式索引,其语法与 NumPy 数组类似。
. 我已经阅读了关于索引的numpy文档,但我没有清楚地理解它,例如,

Asp = sparse.lil_matrix((3,3))
Asp.setdiag(zeros(3))
Asp[0, 1:3] = 10
print Asp.todense()

1.为什么输出是

[[ 0. 10. 10.]
 [ 0. 0. 0.]
 [0. 0. 0.]]

[0,1:3] 是什么意思?如果我使用

Asp[0, 1:2,3] = 10

有一个错误:

IndexError:无效索引
,我不知道原因。

2.获取每行所有非零值的最快方法是什么?

4

2 回答 2

4

对于第二个问题,请使用该nonzero()方法。我不得不挖掘源代码才能找到它,因为我在任何参考文档中都找不到它。

def nonzero(self):
    """nonzero indices

    Returns a tuple of arrays (row,col) containing the indices
    of the non-zero elements of the matrix.

    Examples
    --------
    >>> from scipy.sparse import csr_matrix
    >>> A = csr_matrix([[1,2,0],[0,0,3],[4,0,5]])
    >>> A.nonzero()
    (array([0, 0, 1, 2, 2]), array([0, 1, 2, 0, 2]))

    """
于 2013-01-17T04:28:35.680 回答
2

是什么[0,1:3]意思?

这意味着:第 0 行,元素13(不包括)。由于 Numpy 和 Scipy 使用从零开始的索引,因此第 0 行是第一行,1:3表示第一列和第二列。

Asp[0, 1:2,3]无效,因为您有三个索引0,1:23. 矩阵只有两个轴。

这都是标准的 Numpy 东西;阅读有关该软件包的任何好的教程。

于 2013-01-16T18:02:21.440 回答