Какой самый эффективный способ установить строку в нули для разреженной матрицы scipy?

Я пытаюсь преобразовать следующий код MATLAB в Python, и у меня возникают проблемы с поиском решения, которое работает в любое разумное время.

M = diag(sum(a)) - a;
where = vertcat(in, out);
M(where,:) = 0;
M(where,where) = 1;

Здесь a - разреженная матрица, а где - вектор (как в / из). Решение, которое я использую с помощью Python:

M = scipy.sparse.diags([degs], [0]) - A
where = numpy.hstack((inVs, outVs)).astype(int)
M = scipy.sparse.lil_matrix(M)
M[where, :] = 0  # This is the slowest line
M[where, where] = 1
M = scipy.sparse.csc_matrix(M)

Но так как A 334863x334863, это занимает три минуты. Если у кого-то есть какие-либо предложения о том, как сделать это быстрее, пожалуйста, внесите их! Для сравнения, MATLAB делает этот шаг незаметно быстро.

Спасибо!

Ответы на вопрос(2)

Ваш ответ на вопрос