【总结篇】求众数

本文介绍了使用Python中的numpy、scipy、collections和pandas库来求众数的方法。numpy的bincount()用于非负整数数组计数,scipy.stats.mode()返回最小众数及其频率,collections.Counter()返回最早出现的众数,而pandas库则能提供所有众数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

numpy库

numpy.bincount() 解释:
一句话版:返回从0到数组中最大值,每个值在数组中出现的次数

形象版:对于数组[11, 4, 4, 11, 3, 9, 8],看做是编号分别为11, 4, 4, 11, 3, 9, 8的7个小球。为了将小球归置整齐,需要放到对应编号的桶中,小球的最大编号为11,所以需要11+1=12个桶,同样编号从0-11。最后按照桶编号依次输出桶中包含的小球个数(整个过程其实就是计数排序)。很显然编号必须是非负整数。

详细版参考这里

:假如众数不止一个,只能返回值最小的一个

a = [11, 4, 4, 11, 3, 9, 8]
import numpy as np
counts = np.bincount(a)
np.argmax(counts) ==> 4

scipy库

scipy.stats.mode():
官方函数说明:返回众数和众数出现次数,如果众数不止一个,返回值最小的。

from scipy.stats import mode
mode(a) ==> ModeResult(mode=array([4]), count=array([2]))

collections库

collections.Counter():计数方法,以字典的形式返回元素统计结果
:假如众数不止一个,同样只能返回一个,但是返回的是最早出现的元素

from collections import Counter
Counter(a).most_common(1) ==> [(11, 2)]

pandas库

:可以返回所有的众数

pd.Series(a).mode() ==>    	0     4
						    1    11
						    dtype: int64
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值