Способ получить количество ненулевых значений в coo_matrix модуля питона scipy? - PullRequest
4 голосов
/ 29 августа 2011

Я думал об использовании coo_matrix.nonzero(), который возвращает кортеж из двух массивов, которые содержат индексы ненулевых записей в данной матрице. Пример из документации гласит:

>>> from scipy.sparse import coo_matrix
>>> A = coo_matrix([[1,2,0],[0,0,3],[4,0,5]])
>>> nonzero_entrys = A.nonzero()
(array([0, 0, 1, 2, 2]), array([0, 1, 2, 0, 2]))

Тогда я бы сделал что-то вроде len(nonzero_entrys[0]), но это похоже на диверсию. Есть ли лучший способ, который я пропустил в документах?

Ответы [ 2 ]

5 голосов
/ 29 августа 2011

Вы можете использовать len(A.data) вместо.

3 голосов
/ 14 августа 2015

Объект coo_matrix имеет атрибут, специально дающий ненулевые значения, называемый .nzz.

В качестве примера, сгенерировать матрицу идентификации 5x5.

sparse = scipy.sparse.coo_matrix(np.diag(np.ones(5)))
sparse.nnz
5

Вы можете узнать больше об этом и найти другие полезные атрибуты, выполнив help(scipy.sparse.coo_matrix)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...