你想要这些指数的形式是什么?例如
x=sparse.csr_matrix([[1,2,0,3,0,0],[0,0,0,1,0,0]])
In [15]: for r in x:
....: print r.nonzero()
(array([0]), array([0]))
(array([0, 0]), array([0, 2]))
(array([0, 0, 0]), array([0, 1, 2]))
In [30]: [r.nonzero()[1] for r in x] # or as list
Out[30]: [array([0]), array([0, 2]), array([0, 1, 2])]
In [16]: x.nonzero()
Out[16]: (array([0, 1, 1, 2, 2, 2]), array([0, 0, 2, 0, 1, 2]))整个矩阵上的nonzero具有相同的数字,但它们不会拆分为子列表。但tolil格式与列表列表具有相同的信息。
In [18]: xl=x.tolil()
In [19]: xl.rows
Out[19]: array([[0], [0, 2], [0, 1, 2]], dtype=object)
In [23]: xc=x.tocoo()
In [24]: xc.row
Out[24]: array([0, 1, 2, 2, 1, 2])
In [25]: xc.col
Out[25]: array([0, 0, 0, 1, 2, 2])在coo格式中,存在相同的索引,但顺序不同。但首先将其转换为csr,顺序为
In [29]: x.tocsr().tocoo().col
Out[29]: array([0, 0, 2, 0, 1, 2])