如何统计序列中元素的频度
Posted huowuyan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何统计序列中元素的频度相关的知识,希望对你有一定的参考价值。
方案一:将序列转换为字典{元素:频度},根据字典中的值排序
#1.sorted排序
from random import randint
data = [randint(0, 20) for _ in range(30)] #创建数据
d = dict.fromkeys(data, 0) #创建字典
for x in data:
d[x] += 1 #统计词频
#((v, k) for k, v in d.items()):生成器解析,所需空间少
sorted(((v, k) for k, v in d.items()), reverse=True)[:3] #根据词频排序并截取前3
#2.heapq(堆)
import heapq
#heapq.nlargest 取前n个最大;heapq.nsmallest 取前n个最小
heapq.nlargest(3, ((v, k) for k, v in d.items()))
执行结果:
[(5, 2), (3, 14), (3, 13)]
方案二:使用标准库collections中的Counter对象
from collections import Counter
c = Counter(data) #统计词频
c.most_common(3)
执行结果:
[(2, 5), (13, 3), (14, 3)]
以上是关于如何统计序列中元素的频度的主要内容,如果未能解决你的问题,请参考以下文章