Использование числовых массивов:
import numpy as np
# example matrix
A = np.array([[-1, 1, 0],
[2, 0, -2],
[0, 0, 3]])
i = (A.sum(axis=1) == 0)
A[i, i] = 1
# array([[1, 1, 0],
# [2, 1, -2],
# [0, 0, 3]])
Редактировать : для разреженной матрицы вы в основном делаете то же, что и выше.Разница в том, что A.sum(1)
теперь имеет форму (N, 1), а не (N,), как для массива numpy, поэтому мы должны сгладить его.
# import scipy.sparse as sp
# A = sp.csr_matrix(A) # I suppose that your matrix is in csr format
i = np.asarray(A.sum(axis=1) == 0).ravel()
A[i, i] = 1