如何统计出序列中元素出一的频度

python备忘

  1. 某随机序列[12,3,6,5,6,7,7,...]中找到出现次数最高的三个元素,它们出现的次数是多少?

  2. 对某英文文章的单词进行词频统计,找到出现次数最高的10个单词,它们出现的次数是多少?


首先我们创建一个随机序列

from random import randint
data = [randint(0,20) for _ in xrange(30)]

我们想要的结果应该是一个字典比较直观,比说是{2:5,3:2,...}  #2出现了5次,3出现了2次这个样子

c = dict.fromkeys(data,0)
for x in data:
  c[x]+=1
print(c)

这样我们就统计出了序列中数字出现的频度,然后进行一个排序,就得到了想要的结果。这是常规做法,效率低下,而且啰嗦。

from collections import Counter
c2 = Counter(data)
print(c2.most_common(3))

这样我们就找到了出现频度最高的3个元素,Counter是专门处理这方面的模块,很好用。下面我们来研究一下如何对英文文章进行词频统计,假设我们程序下有一篇名为article.txt的文章

from collections import Counter
import re
txt = open('article.txt').read()
c3 = Counter(re.split('\W+',txt)) #以非字母进行分割
print(c3.most_common(3))

这样我们就得到了出现频率最高的3个单词

2016-12-07 11:37:02

python
python

这是介绍的地方

python的标签

本文相关标签

推荐应用

友情链接


皖ICP备14007051号-2 关于穆子龙