我想在非零索引列表中转换稀疏矩阵,如下所示:
>>> row = array([0,2,2,0,1,2])
>>> col = array([0,0,1,2,2,2])
>>> data = array([1,1,1,1,1,1])
>>> mat = csc_matrix( (data,(row,col)), shape=(3,3) )
>>> mat.todense()
matrix([[1, 0, 1],
[0, 0, 1],
[1, 1, 1]])
>>> convert(mat)
[[0, 2],[2],[0, 1, 2]]
答案 0 :(得分:1)
也许像
>>> from numpy import array
>>> from scipy.sparse import csc_matrix
>>>
>>> row = array([0,2,2,0,1,2])
>>> col = array([0,0,1,2,2,2])
>>> data = array([1,1,1,1,1,1])
>>> mat = csc_matrix( (data,(row,col)), shape=(3,3) )
>>> [list(line.nonzero()[1]) for line in mat]
[[0, 2], [2], [0, 1, 2]]
会有帮助吗?无论如何,你应该看看nonzero。
答案 1 :(得分:1)
也许你正在寻找这样的东西:
>>> [mat.indices[mat.indptr[i]:mat.indptr[i+1]]
for i in range(len(mat.indptr) - 1)]
[array([0, 2]), array([2]), array([0, 1, 2])]
不确定这应该对什么有用。有可能有更好的方法来实现你想要做的事情。