У меня есть матрица сжатого разреженного ряда, содержащая подсчеты. Я хочу построить матрицу, содержащую ожидаемые частоты для этих отсчетов. Вот код, который я использую сейчас:Ускоренный способ построения матрицы ожидаемых частот из разреженной матрицы отсчетов
from scipy.sparse import coo_matrix
#m is a csr_matrix
col_total = m.sum(axis=0)
row_total = m.sum(axis=1)
n = int(col_total.sum(axis=1))
A = coo_matrix(m)
for i,j in zip(A.row,A.col):
m[i,j]= col_total.item(j)*row_total.item(i)/n
Это прекрасно работает на небольшой матрице. На большей матрице (> 1 Гб) цикл for занимает несколько дней. Есть ли способ сделать это быстрее?
Is 'row_total.item (я)' должна быть в знаменателе? – user2357112
Я не вижу, как это вычисление должно производить ожидаемые частоты. – user2357112
Вы правы, это должно быть col_total.item (j) * row_total.item (i)/n Теперь я отредактирую. – kormak