bekommen Ich arbeite mit Python itertools und mit groupby eine Reihe von Paaren, die durch das letzte Element zu sortieren. Ich habe es bekommen zu sortieren, und ich kann ganz gut durch die Gruppen durchlaufen, aber ich würde wirklich lieben, die Länge jeder Gruppe erhalten zu können, ohne durch jeden zu durchlaufen haben, einen Zähler erhöht wird.Python: Wie die Länge der itertools _grouper
Das Projekt ist es, einige Datenpunkte gruppieren. Ich arbeite mit Paaren (numpy.array, int), wo die numpy Array ein Datenpunkt ist und die ganze Zahl ist ein Cluster-Label
Hier ist mein entsprechender Code:
data = sorted(data, key=lambda (point, cluster):cluster)
for cluster,clusterList in itertools.groupby(data, key=lambda (point, cluster):cluster):
if len(clusterList) < minLen:
In der letzten Zeile, 'wenn Len (clusterList) < MinLen:' ich erhalte eine Fehlermeldung, dass das Objekt vom Typ 'itertools._grouper' keine len hat().
Ich habe die Operationen für _groupers nachgeschlagen, kann aber nichts finden, dass die Länge einer Gruppe zur Verfügung zu stellen scheint.
Möglicherweise gibt es bessere Möglichkeiten, aber Sie können das iterable in eine Liste konvertieren und die Elemente zählen ('if len (list (clusterList))
RocketDonkey
Danke, RocketDonkey, das funktioniert perfekt! – user1466679
Kein Problem - die Antworten unten deuten auf die gleiche Lösung hin, so dass Sie eine davon akzeptieren können, um sie zur "Antwort" zu machen. Viel Glück mit allem! – RocketDonkey