Чрезвычайно медленная операция строки суммы в матрице Sparse LIL в Python
Я написал этот код на Python, который дает ожидаемые результаты, но чрезвычайно медленно. Узким местом является суммирование нескольких строк scipy.sparse.lil_matrix. Как я могу сделать это быстро?
# D1 is a 1.5M x 1.3M sparse matrix, read as scipy.sparse.lil_matrix.
# D2 is a 1.5M x 111 matrix, read as numpy.array
# F1 is a csv file, read using csv.reader
for row in F1:
user_id = row[0]
clust = D2[user_id, 110],
neighbors = D2[ D2[:, 110] == clust][:,1]
score = np.zeros(1300000)
for neigh in neighbors:
score = score + D1 [neigh, :] # the most expensive operation
toBeWritten = np.argsort(score)[:,::-1].A[0,:]
Пожалуйста, дайте мне знать, если есть что-то еще, что не очень оптимально.