Ho il seguente codice che vorrei ottimizzare usando numpy, preferibilmente rimuovendo il loop. Non riesco a vedere come affrontarlo, quindi qualsiasi suggerimento sarebbe utile.Ottimizzazione/rimozione del loop
indici è una matrice numerica N (2) di numeri interi, N può essere di alcuni milioni. Quello che fa il codice è trovare gli indici ripetuti nella prima colonna. Per questi indici faccio tutte le combinazioni di due degli indici corrispondenti nella seconda colonna. Quindi li raccolgo insieme all'indice nella prima colonna.
index_sets = []
uniques, counts = np.unique(indices[:,0], return_counts=True)
potentials = uniques[counts > 1]
for p in potentials:
correspondents = indices[(indices[:,0] == p),1]
combs = np.vstack(list(combinations(correspondents, 2)))
combs = np.hstack((np.tile(p, (combs.shape[0], 1)), combs))
index_sets.append(combs)
Sembra un problema di rete, quindi è possibile esaminare il modulo 'networkx'. – Divakar