我找不到更多关于scipy.sparse索引的信息,除了SciPy v0.11参考指南,其中说
The lil_matrix class supports basic slicing and fancy indexing with a similar syntax to NumPy arrays.。我已阅读关于索引的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: invalid index,我不知道原因。
2.什么是获得每行所有非零值的最快方法?
答案 0 :(得分:4)
对于第二个问题,请使用nonzero()
方法。我不得不通过the source来找到它,因为我在任何参考文档中找不到它。
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]))
"""
答案 1 :(得分:2)
[0,1:3]
是什么意思?
这意味着:第0行,元素1
到3
(不包括)。由于Numpy和Scipy使用从零开始的索引,因此第0行是第一行,1:3
表示第一列和第二列。
Asp[0, 1:2,3]
无效,因为您有三个索引,0
,1:2
和3
。矩阵只有两个轴。
这是所有标准的Numpy东西;阅读该软件包上的任何好教程。