Python Language
Conteggio
Ricerca…
Conteggio di tutte le occorrenze di tutti gli articoli in un iterable: collections.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
Le collections.Counter
può essere utilizzato per qualsiasi iterable e conta ogni occorrenza per ogni elemento.
Nota : un'eccezione è se un dict
o altre collections.Mapping
classe simile a Mapping viene fornita, quindi non le conteggia, ma crea un contatore con questi valori:
Counter({"e": 2})
# Out: Counter({"e": 2})
Counter({"e": "e"}) # warning Counter does not verify the values are int
# Out: Counter({"e": "e"})
Ottenere il valore più comune (-s): collections.Counter.most_common ()
Il conteggio delle chiavi di una Mapping
non è possibile con collections.Counter
ma possiamo contare i valori :
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})
Gli elementi più comuni sono disponibili con il most_common
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)]
Conteggio delle occorrenze di un elemento in una sequenza: list.count () e 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
Conteggio delle occorrenze di una sottostringa in una stringa: str.count ()
astring = 'thisisashorttext'
astring.count('t')
# Out: 4
Funziona anche per sottostringhe più lunghe di un carattere:
astring.count('th')
# Out: 1
astring.count('is')
# Out: 2
astring.count('text')
# Out: 1
che non sarebbe possibile con collections.Counter
che conta solo caratteri singoli:
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})
Conteggio delle occorrenze nell'array numpy
Per contare le occorrenze di un valore in una matrice numpy. Questo funzionerà:
>>> import numpy as np
>>> a=np.array([0,3,4,3,5,4,7])
>>> print np.sum(a==3)
2
La logica è che l'istruzione booleana produce una matrice in cui tutte le occorrenze dei valori richiesti sono 1 e tutte le altre sono zero. Quindi sommando questi dà il numero di occorrenze. Questo funziona per array di qualsiasi forma o dtype.
Ci sono due metodi che uso per contare le occorrenze di tutti i valori unici in numpy. Unico e bincount. Unico appiattisce automaticamente gli array multidimensionali, mentre bincount funziona solo con gli array 1d contenenti solo numeri interi positivi.
>>> 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]
Se i tuoi dati sono array numpy, in genere è molto più veloce usare metodi numpy per convertire i tuoi dati in metodi generici.