Я пытаюсь "перевести" некоторый код Matlab в Python, и в Matlab есть одна строка, которая устанавливает несколько строк в разреженной матрице в 0s:
Ks(idx,:)=0; %no affinity for W inside fs
где Ks
- это разреженная матрица (которая является симметричной и имеет довольно большой размер), а idx
- это одномерный массив, обозначающий индексы строк для внесения изменений, а также довольно большой по размеру. И в следующей строке он также меняет эти столбцы на 0, поэтому Ks
все еще симметричен:
Ks(:,idx)=0;
Подобные действия в Python (Ks[idx,:]=0
), похоже, работают только для маленьких матриц, когда они становятся большими, я получаю MemoryError
. В настоящее время моя Ks
является матрицей csr, преобразующей ее в lil
и делающей это очень медленно.
Я не совсем знаком с разреженными матрицами, я знаю, что в Python есть более 1 типа (например, csr, csc, lil и т. Д.), Но в коде Matlab нет таких различий, я только нашел вызов функции sparse()
. Так, какова моя лучшая ставка в этой ситуации?
Заранее спасибо.