サーチ…


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

collections.Counterは、任意の反復可能性に使用でき、すべての要素のすべての発生を数えます。

:1つの例外は、 dictまたは別のcollections.Mappingようなクラスが指定されている場合、それらはカウントされず、これらの値を持つカウンタが作成されます。

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

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

最も一般的な値を取得する(-s):collections.Counter.most_common()

collections.CounterではMappingキーを数えることはできませんが、 を数えることができます

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})

最も一般的な要素は、 most_common -methodによって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)]

シーケンス内の1つのアイテムの出現回数をカウントする:list.count()および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

文字列中の部分文字列の出現を数える:str.count()

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

これは、1文字より長い部分文字列に対しても機能します。

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

これはcollections.Counterでは不可能です。単一の文字だけをカウントするカウンタ:

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})

numpy配列で発生をカウントする

数値の配列で値の出現を数える。これは動作します:

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

論理は、ブールステートメントが、要求された値のすべての出現箇所が1であり、その他すべてがゼロである配列を生成するということです。これらを合計すると、発生回数が決まります。これは、任意の形状またはdtypeの配列に対して機能します。

numpyで一意のすべての値の発生をカウントするために私が使用する2つのメソッドがあります。ユニークで豊富です。 Uniqueは多次元配列を自動的に平坦化しますが、bincountは正の整数のみを含む1d配列でのみ機能します。

>>> 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] 

データが配列が奇数の場合は、一般にnumpyメソッドを使用してデータを汎用メソッドに変換する方がはるかに高速です。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow