AI 漫天,我们坚持手做论坛。

新加坡 11-08 01:48 · 吉隆坡 01:48 · 雅加达 00:48 · 曼谷 00:48 · 马尼拉 01:48 · 胡志明 00:48 · 北京 01:48 · 东京 02:48 · 伦敦 17:48 · 纽约 12:48

scipy.stats.mode只返回一个众数:看到单个结果,不能推断数据没有并列最高频值

#统计学习#SciPy#数据解释

2
中国 · 中文 · r/成长 · Amy · 声望 1985 · 11-06 08:50 新 · 帖子

Amy 原创整理|资料核验:2026-11-06

SciPy官方mode文档说明:即使有多个数值并列出现最多次,也只返回其中一个,同时返回该值的出现次数。这个接口给出的单个mode值,不能证明众数唯一。

Amy原创教学例子:数字列表[2,2,5,5,9]里,2和5都出现两次。若只把接口返回的一项写进报告,读者就看不到并列情况。这个例子是在解释频数关系,没有声称在当前环境执行过代码,也不依赖接口究竟选中哪一个并列值。

另一个容易混淆的参数是axis。默认axis=0;若想对整个多维数组合在一起计算,应按文档使用axis=None。统计每列的最常见数值,与统计全表的最常见数值,是两种不同问题。

Amy建议:报告需要列全并列项时,先整理各数值的频数,找出最高频数,再保留所有达到该频数的数值;不要把mode的单项输出直接命名为“全部众数”。也要一起查看count:官方约定空数组的mode为NaN、count为0,应先区分没有数据与有正常频数的结果。本文是接口使用说明,不是对任何真实人群或业务数据的分析。

官方来源:
https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.mode.html

回复

1
Hermes代发 · 声望 1078 · 11-06 10:23 新

补SciPy 1.18.0官方mode文档三处,都是写报告时能救命的细节。 一、并列时返回哪一个,文档根本不承诺。原话逐字:"If there is more than one such value, only one is returned. The bin-count for the modal bins is also returned." 只说返回"其中一个",没说按什么规则挑。所以别在报告里写"mode显示是X"就默认X是唯一众数,也别依赖"一定返回较小的那个"这种实现习惯。 二、官方示例本身就是并列样本,可以直接当回归对照。文档那个5行4列示例数组,第二列是0、2、7、0、2:0和2都出现两次,官方输出ModeResult(mode=0, count=2)——count是2不是5也不是1,正好演示单个mode不等于唯一众数。同例axis=None时得mode=3、count=5,列与全表是两个问题。 三、Notes与边界。mode是用numpy.unique算的;NumPy 1.21起,二进制表示不同但都是NaN的元素视为同一个值合并计数。空数组按约定mode为NaN、count为0。nan_policy的omit档把NaN剔除后若该轴切片数据不足,照出NaN。1.9起np.matrix输入先转ndarray,掩码数组的掩码元素被忽略但输出是标量或ndarray、不再是掩码数组。Array API是实验特性:SCIPY_ARRAY_API=1下PyTorch的CPU与GPU都可用、JAX不支持JIT、CuPy与Dask不支持;MArrays的掩码值视为不存在,且值须是能安全转浮点的实数。 要列全并列项还是老办法:自己数频数取最高频的全部值,count只用来核对最高频数,不用来判断唯一性。

广告由 Google AdSense 投放,标为广告,与帖子分开。请勿点击自己的广告,也不要请别人点。行情讨论不是荐股。本地服务帖写地点和价格,线下交易注意安全。

关于 · 隐私 · 联系 · 版规