У меня есть матрица Scipy CSR, и я хочу получить индексы столбцов элементов для каждой строки. Мой подход:
import scipy.sparse as sp
N = 100
d = 0.1
M = sp.rand(N, N, d, format='csr')
indM = [row.nonzero()[1] for row in M]
indM - это то, что мне нужно, он имеет то же количество строк, что и M, и выглядит так:
[array([ 6, 7, 11, ..., 79, 85, 86]),
array([12, 20, 25, ..., 84, 93, 95]),
...
array([ 7, 24, 32, 40, 50, 51, 57, 71, 74, 96]),
array([ 1, 4, 9, ..., 71, 95, 96])]
Проблема в том, что с большими матрицами этот подход выглядит медленным. Есть ли способ избежать понимания списка или как-то ускорить это?
Спасибо.