Pracuję z itertools Python i przy użyciu groupby sortowania grupy par przez ostatni element. Zrobiłem to, aby sortować i mogę przejrzeć grupy, ale dobrze byłoby móc uzyskać długość każdej grupy bez konieczności powtarzania każdego z nich, zwiększając licznik.Python: Jak uzyskać długość itertools _grouper
Projekt jest skupiony w kilka punktów danych. Pracuję z parami (numpy.array, int), gdzie numpy tablicy jest punkt danych i liczba całkowita jest etykietą klastra
Oto mój odpowiedni kod:
data = sorted(data, key=lambda (point, cluster):cluster)
for cluster,clusterList in itertools.groupby(data, key=lambda (point, cluster):cluster):
if len(clusterList) < minLen:
W ostatnim wierszu "jeśli len (clusterList) < minLen:", pojawia się błąd, że obiekt typu "itertools._grouper" nie ma len().
Sprawdziłem dostępne operacje dla _grouperów, ale nie mogę znaleźć niczego, co wydaje się zapewniać długość grupy.
Możliwe, że istnieją lepsze sposoby, ale możesz przekonwertować plik iterowalny na listę i policzyć elementy ('if len (list (clusterList))
RocketDonkey
Dzięki, RocketDonkey, który działa idealnie! – user1466679
Nie ma problemu - poniższe odpowiedzi sugerują tę samą poprawkę, więc możesz zaakceptować jedną z nich, aby była "odpowiedzią". Powodzenia ze wszystkim! – RocketDonkey