在python中的列表列表中转换稀疏矩阵

时间:2012-03-23 16:02:42

标签: python numpy scipy sparse-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) )
>>> mat.todense() 
matrix([[1, 0, 1],
    [0, 0, 1],
    [1, 1, 1]])
>>> convert(mat)
[[0, 2],[2],[0, 1, 2]]

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])]

不确定这应该对什么有用。有可能有更好的方法来实现你想要做的事情。