2016-03-08 1 views
3

Мне нужно обрезать большое количество записей из разреженной матрицы SciPy. В настоящее время я преобразовать матрицу формата ДОК и индивидуально назначить каждую запись в 0.эффективно устанавливает большое количество разреженных матричных записей SciPy в ноль

m = m.todok() 
for i, j in pruneme: 
    m[i,j] = 0 

Это крайне медленно.

Есть ли более быстрый способ?

+0

Какой формат имеет 'm' в норме? –

+0

@RolandW Он начинается как csr_matrix. –

ответ

4

Вы можете установить элементы КСО разреженных массивы эффективны, до тех пор, пока вы не добавить новые ненулевые, просто по индексу массива с кортежами:

i, j = zip(*pruneme) # assuming that pruneme is a python list 
m[i, j] = 0. 
m.eliminate_zeros() 

Это должно быть намного быстрее, чем строительство двух массивов.