pythonのcollectionsモジュールCounterクラス使用学習
6461 ワード
今日実験室で午后の素朴なベイズの基本的な理论を见て、前の私の多くの理论に対する学习の态度はあまり理解していないと言わざるを得なくて、これは今日の午后深く见る时とても骨が折れることを招いて、仕方なく途中で休むしかなくて、それから1つの具体的な実例を持ってこのような随所に见られるベイズの思想を勉强して、言わざるを得ません現実の生活の中で確率にかかわるところであればBayes理論を使って物事を解決することができます.今日勉強した例は素朴なベイズが間違ったスペルを直す問題です.もちろん、この文章の目的はこの理論を説明するためではありません.前のブログでその勉強した文章を転載しました.よく書けていて、分かりやすいです.今日は主に誤字訂正モデルで使われているpythonのクラスCounterについて学びました.このクラスはpython内蔵モジュールcollectionsのクラスで、使いやすいと言えます.最もよく使われる機能は、リスト、辞書、文字列などの要素の繰り返し回数を計算する容器であることです.よし、ほかはあまり言わないで、テストコードを直接見てください.補足する必要があるのはコードの中ですでに説明して、やはりよく理解して、以下はコードです:
次は結果です.
Counter()cou1は:------->>Counter({′:13,′e′:13,′a′:8,′l′:6,′r′:4,′w′:4,′h′:3,′v′:3,′v′:3,′d′:2,′i′:2,′o′:2,′o′:2,′n′:2,′y′:2,′!′:1,′.′.′:1,′G′:1,′W′:1,′c′:1,′f′:1,′m′:1,′m′:1,′p′:1})cou2は2,′p′:1,′p′:1})cou2は2であり,2は2,′p′:1,′p′:1:---->Counter({'E':90,'z':30,'x':20,'G':7,'M':6,'N':6,'B':5,'A':2})cou 3は、------->Counter({'z':45,'y':34,'x':23,'B':2,'A':1,'m':0,'o':-5})cou3のすべての要素のカウント総数は、100がcou3のキーをリストに変換する:['A','B','B','y','x','z','m','o']cou3のキーをセットに変換する:set(['A','B','m','m','o','y','x','z'])cou3のキーをリストに変換する:{'A':1,'B':1,'B':2,'y':34,'x':23,'z':45,'m':0,'o':-5}cou 3のキー値を(elem,count)形式に変換すると,[('A',1),('B',2),('y',34),('x',23),('z',45),('m',0),('o',−5)]取り出しカウント値が最小の上位4要素:[('A',2),('B',5),('N',6)]bの値が----->5 aの値が----->18 Aの値が----->−4 cou2が------->>Counter({'E':90,'z':30,'x':20,'G':7,'N':6,'B':6,'B':5,'A':0,'M':−4})cou2が:------->>Counter({E':90,'z':90,'z','z':,'z':90,'z','z':,'z':,'z':,'z':9,'z':,':30,'x':20,'G':7,'N':6,'B':5,'M':-4})['A', 'B', 'B', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z','z']cou2とcou3の和は、Counter({'E':90,'z':75,'x':43,'y':34,'B':7,'G':7,'N':6,'A':1})cou2とcou3が、Counter({'E':90,'z':45,'y':34,'x':23,'G':7,'N':6,'N':6,'A':5,'A':1})cou2とcou3が、Counter({'z':30,'z':30,'z':30,'z':30,'z':30,'z':30,'z':30,'z':30,'z':30,''x':20,'B':2})cou 2とcou 3の差は、Counter({'E':90,'G':7,'N':6,'o':5,'B':3})
#!/usr/bin/env python
#encoding:utf-8
'''
: python collections
collections :
:http://docs.python.org/2/library/collections.html
collections Python 2.4 , dict、set、list、tuple , :
deque: 。 2.4。
defaultdict: , 。 2.5。
namedtuple() : , 。 2.6。
OrderedDict : , 。 2.7。
Counter : hashable , 。 2.7。
Antuor:
'''
from collections import Counter
def collections_test():
#Counter
# , :key-value,key ,value
string='we are family and we love peace.We have the Greatwall and the yellow river!'
str_dict={'A':2,'B':5,'G':7,'E':90,'M':6,'N':6, 'x':20,'z':30}
cou0 = Counter()# Counter
print cou0
cou1 = Counter(string)# Counter
print 'cou1 :------>', cou1
cou2 = Counter(str_dict)# Counter
print 'cou2 :------>', cou2
cou3 = Counter(A=1, B=2, x=23, y=34, z=45, o=-5, m=0)#
print 'cou3 :------>', cou3
print 'cou3 :'
print sum(cou3.values())
print ' cou3 :'
print list(cou3)
print ' cou3 :'
print set(cou3)
print ' cou3 :'
print dict(cou3)
print ' cou3 (elem, count) :'
print cou3.items()
print ' 4 :'
print cou2.most_common()[:-4:-1]
cou1.update('balabalabalabalabala')#
print 'b ------>', cou1['b']
print 'a ------>', cou1['a']
cou2.subtract('AA')# ‘A’ 0 key
cou2.subtract('MMMMMMMMMM')# ‘M’
print 'A ------>', cou2['A']
print 'M ------>', cou2['M']
print 'cou2 :------>', cou2
# A , del
del cou2['A']
print 'cou2 :------>', cou2# A key
#elements()
# 1
print list(cou3.elements())
#
print 'cou2 cou3 :'
print cou2+cou3
print 'cou2 cou3 :'
print cou2| cou3
print 'cou2 cou3 :'
print cou2 & cou3
print 'cou2 cou3 :'
print cou2 - cou3
collections_test()
次は結果です.
Counter()cou1は:------->>Counter({′:13,′e′:13,′a′:8,′l′:6,′r′:4,′w′:4,′h′:3,′v′:3,′v′:3,′d′:2,′i′:2,′o′:2,′o′:2,′n′:2,′y′:2,′!′:1,′.′.′:1,′G′:1,′W′:1,′c′:1,′f′:1,′m′:1,′m′:1,′p′:1})cou2は2,′p′:1,′p′:1})cou2は2であり,2は2,′p′:1,′p′:1:---->Counter({'E':90,'z':30,'x':20,'G':7,'M':6,'N':6,'B':5,'A':2})cou 3は、------->Counter({'z':45,'y':34,'x':23,'B':2,'A':1,'m':0,'o':-5})cou3のすべての要素のカウント総数は、100がcou3のキーをリストに変換する:['A','B','B','y','x','z','m','o']cou3のキーをセットに変換する:set(['A','B','m','m','o','y','x','z'])cou3のキーをリストに変換する:{'A':1,'B':1,'B':2,'y':34,'x':23,'z':45,'m':0,'o':-5}cou 3のキー値を(elem,count)形式に変換すると,[('A',1),('B',2),('y',34),('x',23),('z',45),('m',0),('o',−5)]取り出しカウント値が最小の上位4要素:[('A',2),('B',5),('N',6)]bの値が----->5 aの値が----->18 Aの値が----->−4 cou2が------->>Counter({'E':90,'z':30,'x':20,'G':7,'N':6,'B':6,'B':5,'A':0,'M':−4})cou2が:------->>Counter({E':90,'z':90,'z','z':,'z':90,'z','z':,'z':,'z':,'z':9,'z':,':30,'x':20,'G':7,'N':6,'B':5,'M':-4})['A', 'B', 'B', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z', 'z','z']cou2とcou3の和は、Counter({'E':90,'z':75,'x':43,'y':34,'B':7,'G':7,'N':6,'A':1})cou2とcou3が、Counter({'E':90,'z':45,'y':34,'x':23,'G':7,'N':6,'N':6,'A':5,'A':1})cou2とcou3が、Counter({'z':30,'z':30,'z':30,'z':30,'z':30,'z':30,'z':30,'z':30,'z':30,''x':20,'B':2})cou 2とcou 3の差は、Counter({'E':90,'G':7,'N':6,'o':5,'B':3})