Конвертировать разреженную матрицу в список списка в Python - PullRequest
3 голосов
/ 23 марта 2012

Я хочу преобразовать разреженную матрицу в список ненулевого индекса следующим образом:

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

1 голос
/ 23 марта 2012

Может быть, вы ищете что-то вроде этого:

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

Хотя не уверен, что это должно быть полезно.Скорее всего, есть лучшие способы достижения того, что вы пытаетесь сделать.

1 голос
/ 23 марта 2012

Может быть, что-то вроде

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

поможет? В любом случае, вам, вероятно, стоит взглянуть на ненулевое .

...