Suche…


Zählen aller Vorkommen aller Elemente in einer iterierbaren: collection.Counter

from collections import Counter

c = Counter(["a", "b", "c", "d", "a", "b", "a", "c", "d"])
c
# Out: Counter({'a': 3, 'b': 2, 'c': 2, 'd': 2})
c["a"]
# Out: 3

c[7]     # not in the list (7 occurred 0 times!)
# Out: 0

Der collections.Counter kann für jedes beliebige Element verwendet werden und zählt jedes Vorkommen für jedes Element.

Hinweis : Eine Ausnahme ist, wenn ein dict oder eine andere collections.Mapping Klasse angegeben ist. Dann werden sie nicht gezählt, sondern es wird ein Counter mit den folgenden Werten erstellt:

Counter({"e": 2})
# Out: Counter({"e": 2})

Counter({"e": "e"})        # warning Counter does not verify the values are int
# Out: Counter({"e": "e"})

Den häufigsten Wert (-s) ermitteln: Collections.Counter.most_common ()

Das Zählen der Schlüssel eines Mapping ist bei collections.Counter nicht möglich. Zähler, aber wir können die Werte zählen :

from collections import Counter
adict = {'a': 5, 'b': 3, 'c': 5, 'd': 2, 'e':2, 'q': 5}
Counter(adict.values())
# Out: Counter({2: 2, 3: 1, 5: 3})

Die häufigsten Elemente sind mit der most_common Methode most_common :

# Sorting them from most-common to least-common value:
Counter(adict.values()).most_common()
# Out: [(5, 3), (2, 2), (3, 1)]

# Getting the most common value
Counter(adict.values()).most_common(1)
# Out: [(5, 3)]

# Getting the two most common values
Counter(adict.values()).most_common(2)
# Out: [(5, 3), (2, 2)]

Zählen der Vorkommen eines Elements in einer Sequenz: list.count () und tuple.count ()

alist = [1, 2, 3, 4, 1, 2, 1, 3, 4]
alist.count(1)
# Out: 3

atuple = ('bear', 'weasel', 'bear', 'frog')
atuple.count('bear')
# Out: 2
atuple.count('fox')
# Out: 0

Zählen der Vorkommen eines Teilstrings in einem String: str.count ()

astring = 'thisisashorttext'
astring.count('t')
# Out: 4

Dies funktioniert auch für Teilzeichenfolgen, die länger als ein Zeichen sind:

astring.count('th')
# Out: 1
astring.count('is')
# Out: 2
astring.count('text')
# Out: 1

was mit collections.Counter nicht möglich wäre. Zähler, der nur einzelne Zeichen zählt:

from collections import Counter
Counter(astring)
# Out: Counter({'a': 1, 'e': 1, 'h': 2, 'i': 2, 'o': 1, 'r': 1, 's': 3, 't': 4, 'x': 1})

Zählung von Vorkommen im numpy-Array

Zählen der Vorkommen eines Werts in einem numpy-Array. Das wird funktionieren:

>>> import numpy as np
>>> a=np.array([0,3,4,3,5,4,7])
>>> print np.sum(a==3)
2

Die Logik ist, dass die boolesche Anweisung ein Array erzeugt, in dem alle Vorkommen der angeforderten Werte 1 sind und alle anderen Null sind. Das Summieren dieser Werte ergibt also die Anzahl der Vorkommen. Dies funktioniert für Arrays mit beliebigen Formen oder Datentypen.

Ich verwende zwei Methoden, um Vorkommen aller eindeutigen Werte in numpy zu zählen. Einzigartig und zahlreich. Unique reduziert automatisch mehrdimensionale Arrays, während bincount nur bei 1d-Arrays funktioniert, die nur positive Ganzzahlen enthalten.

>>> unique,counts=np.unique(a,return_counts=True)
>>> print unique,counts # counts[i] is equal to occurrences of unique[i] in a
[0 3 4 5 7] [1 2 2 1 1]
>>> bin_count=np.bincount(a)
>>> print bin_count # bin_count[i] is equal to occurrences of i in a
[1 0 0 2 2 1 0 1] 

Wenn Ihre Daten aus numpy-Arrays bestehen, ist es im Allgemeinen viel schneller, numpy-Methoden zu verwenden, als Ihre Daten in generische Methoden umzuwandeln.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow