Operación de fila de suma extremadamente lenta en matriz LIL dispersa en Python

He escrito este código en Python que está dando los resultados esperados pero es extremadamente extremadamente lento. El cuello de botella es la suma de varias filas de scipy.sparse.lil_matrix. ¿Cómo puedo hacerlo rápido?

# 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,:]

Avíseme si hay algo más que no sea muy óptimo.

Respuestas a la pregunta(1)

Su respuesta a la pregunta