Wie zähle ich die Vorkommen eines Elements in einem eindimensionalen Array in Python
-
Verwenden von
collections
, um die Anzahl der Vorkommen in einem Array in Python zu ermitteln -
Verwendung der
NumPy
-Bibliothek, um die Anzahl der Vorkommnisse in einem Array in Python zu ermitteln
Bei der Arbeit mit einem Array ist das Zählen der Anzahl der Vorkommnisse eines Elements eines der Hauptprobleme, mit denen ein Entwickler konfrontiert werden kann. Stellen Sie sich vor, Sie haben ein Array mit der Anzahl der verkauften Artikel auf einer eCommerce-Site über 10 Tage und möchten wissen, wie viele Tage mehr als 100 Artikel verkauft wurden.
sales = [0, 100, 100, 80, 70, 80, 20, 10, 100, 100, 80, 70, 10, 30, 40]
Der einfachste Weg zur Lösung dieses Problems besteht darin, die Anzahl der 100 Vorkommnisse in dem Array zu ermitteln.
Verwenden von collections
, um die Anzahl der Vorkommen in einem Array in Python zu ermitteln
collections
verhalten sich wie Container zur Speicherung von Datensammlungen. Wir können das Modul collections
einfach importieren und die Counter
-Funktion verwenden.
Überprüfen Sie den untenstehenden Code:
import collections
sales=[0, 100, 100, 80, 70, 80, 20, 10, 100, 100, 80, 70, 10, 30, 40]
print(collections.Counter(sales))
Die resultierende Ausgabe ist ein Dictionary. Es listet auf, wie oft jedes Element in dem Array aufgetreten ist.
Wenn wir jedoch die Anzahl der 100 Vorkommnisse im Array sales
ausdrucken wollen, können wir sie aus dem Dictionary abrufen.
>>>print(collections.Counter(sales)[100])
4
Das Modul Collection
arbeitet auch mit Dezimalzahlen und Zeichenketten.
floatarr=[0.7, 10.0, 10.1, .8, .7, .8, .2, .1, 10.0,
10.0, .8, .8, .7, .7, .8]
print(collections.Counter(floatarr))
#Counter({0.8: 5, 0.7: 4, 10.0: 3, 10.1: 1, 0.2: 1, 0.1: 1})
stringarr=["george","mark","george","steve","george"]
print(collections.Counter(stringarr))
#Counter({'george': 3, 'mark': 1, 'steve': 1})
Verwendung der NumPy
-Bibliothek, um die Anzahl der Vorkommnisse in einem Array in Python zu ermitteln
Wir können jedoch auch NumPy verwenden, eine Bibliothek, die in Python definiert ist, um große Arrays zu handhaben, und die auch eine große Anzahl mathematischer Funktionen enthält.
Es gibt mehrere Möglichkeiten, wie Sie die in NumPy definierten Funktionen verwenden können, um die Anzahl der Elemente in einem Array zurückzugeben.
Verwendung der unique
Funktion in NumPy
unique
Funktion zusammen mit Count, gibt ein Dictionary der Anzahl jedes Elements zurück. Sie arbeitet auch mit Dezimalzahlen und Zeichenketten.
import collections, numpy
aUnique = numpy.array([0, 100, 100, 80, 70, 80, 20, 10, 100,
100, 80, 70, 10, 30, 40])
unique, counts = numpy.unique(aUnique, return_counts=True)
print(dict(zip(unique, counts)))
Verwendung der Funktion count_nonzero
in NumPy
Die Verwendung der count_nonzero
gibt die Anzahl des gesuchten Artikels zurück. Es bietet eine leicht lesbare Schnittstelle und weniger Codezeilen.
>>>aCountZero = numpy.array([0, 100.1, 100.1, 80, 70, 80, 20, 10,
100, 100, 80, 70, 10, 30, 40,"abc"])
>>>print(numpy.count_nonzero(aCountZero == "abc"))
1
count_nonzero
funktioniert auch mit Dezimalzahlen und Zeichenketten.
>>>aCountZero = numpy.array([0, 100.1, 100.1, 80, 70, 80, 20, 10,
100, 100, 80, 70, 10, 30, 40])
>>>print(numpy.count_nonzero(aCountZero == 100.1))
1
Verwendung der Funktion bincount
in NumPy - nur für Arrays mit ganzen Zahlen
Wenn Sie jedoch ein Array haben, das nur ganze Zahlen enthält, können Sie die Funktion bincount
von NumPy verwenden. Der beste Teil ist, dass sie die Ergebnisse als ein Array zurückgibt.
>>>abit = numpy.array([0, 6, 0, 10, 0, 1, 1, 0, 10, 9, 0, 1])
>>>print(numpy.bincount(abit))
[5 3 0 0 0 0 1 0 0 1 2]
Für die Zahlen in dem Array zeigt das Ergebnis die Anzahl der Elemente in aufsteigender Reihenfolge an. Zum Beispiel kommt 0 im Array abit
5 Mal vor und 10 2 Mal, wie durch das erste und letzte Element des Arrays angegeben.