Sto lavorando con Python itertools e utilizzo groupby per ordinare un gruppo di coppie dall'ultimo elemento. L'ho ottenuto per ordinare e posso scorrere i gruppi in modo corretto, ma mi piacerebbe davvero essere in grado di ottenere la lunghezza di ogni gruppo senza dover iterare attraverso ciascuno, incrementando un contatore.Python: come ottenere la lunghezza di itertools _grouper
Il progetto è in cluster alcuni punti dati. Sto lavorando con coppie di (numpy.array, int) dove la matrice NumPy è un punto di dati e il numero intero è un'etichetta gruppo
Ecco il mio codice rilevante:
data = sorted(data, key=lambda (point, cluster):cluster)
for cluster,clusterList in itertools.groupby(data, key=lambda (point, cluster):cluster):
if len(clusterList) < minLen:
Sull'ultima riga, 'if len (clusterList) < minLen:', ottengo un errore che l'oggetto di tipo 'itertools._grouper' non ha len().
Ho cercato le operazioni disponibili per _groupers, ma non riesco a trovare nulla che sembra fornire la lunghezza di un gruppo.
Ci possono essere modi migliori, ma è possibile convertire l'iterabile in una lista e contare gli elementi ('if len (list (clusterList))
RocketDonkey
Grazie, RocketDonkey, che funziona perfettamente! – user1466679
Nessun problema - le risposte sottostanti suggeriscono la stessa soluzione, quindi puoi accettarne una per renderla 'la risposta'. Buona fortuna per tutto! – RocketDonkey