Python中如何统计NumPy数组中各元素出现的次数_使用unique函数及其参数
用np.unique统计频次需显式设return_counts=True,返回values和counts两个数组;多维数组须先扁平化;axis参数与return_counts=True互斥;非负整数可用更快的np.bincount,但不支持浮点、负数;浮点数需预处理防精度误差。
如何用 np.unique 统计数组中每个元素的出现次数
直接调用 np.unique 并设置 return_counts=True 即可拿到元素值和对应频次两个数组,这是最常用也最稳妥的方式。
常见错误是只写 np.unique(arr) 就以为能返回次数——它默认只去重并排序,不统计频次。
- 必须显式传入
return_counts=True,否则返回值长度为1,不会包含计数结果 - 返回顺序固定:
values, counts = np.unique(arr, return_counts=True),不能颠倒 - 输入必须是 1D 数组;若为多维,需先扁平化(
arr.ravel()或arr.flatten())
示例:
import numpy as np arr = np.array([1, 2, 2, 3, 3, 3]) vals, counts = np.unique(arr, return_counts=True) # vals → array([1, 2, 3]), counts → array([1, 2, 3])
为什么 axis 参数在统计频次时基本用不上
np.unique 的 axis 参数仅控制“沿哪个轴去重”,但**不支持按轴统计频次**。一旦指定 axis,return_counts=True 会报错或行为异常(NumPy 1.20+ 报 ValueError: The 'axis' parameter is not supported when 'return_counts' is True)。
也就是说:要统计频次,就必须先展平;想保留结构维度做分块统计,得手动切片或用 scipy.stats.itemfreq(已弃用)或 np.bincount(仅限非负整数)替代。
- 对二维数组逐行统计?用列表推导:
[np.unique(row, return_counts=True) for row in arr] - 想统计每列出现最多的值?先转置再用
unique,但频次仍得单列算 -
axis=0或axis=1+return_counts=True是无效组合,直接抛异常
np.bincount 比 unique 快,但限制极多
当数组是**非负整数**且值域不太大(比如像素值、类别标签 0~255)时,np.bincount 是更快的选择,它内部用 C 实现计数,时间复杂度接近 O(n)。
爱派AiPy
融合LLM与Python生态的开源AI智能体
但它不处理浮点数、负数、字符串,也不返回实际出现的值(只返回下标为值、内容为频次的数组),容易误读结果。
-
np.bincount([0, 1, 1, 3])→array([1, 2, 0, 1]),注意索引 2 处是 0(表示值 2 没出现) - 含负数?先偏移:
arr_min = arr.min(); np.bincount(arr - arr_min),但得自己记偏移量 - 含浮点数?必须先量化或转整数,否则报
TypeError: array cannot be safely cast to required type
遇到重复浮点数统计不准,不是 bug,是精度问题
浮点数在计算机中无法精确表示,np.unique 默认使用严格相等判断(==),所以 0.1 + 0.2 和 0.3 在 NumPy 中很可能被识别为不同元素。
这不是函数缺陷,而是浮点语义本身的问题。解决思路不是换函数,而是预处理:
- 四舍五入到固定小数位:
np.round(arr, decimals=5)再传给unique - 用
np.isclose手动聚类(适合小数组,性能差) - 改用
pandas.cut分箱后统计,更适合分析场景
别指望 unique 自带容差参数——它没有,也没计划加。
如非特殊说明,本站内容均来自于网友自主分享,如有任何问题均请联系我们进行处理!
猜您喜欢
《失落城堡2》法杖元素搭配攻略
2026-07-11失落城堡2法杖元素怎么搭配?采用了2d卡通风格的失落城堡2是一款好评度极高的冒险动作手游,在该款游戏中法杖流派凭借着独特的魔法输出也成为了不少玩家比较喜欢的角色,本期就给喜欢使用法杖的朋友们准备了一起失落城堡2法杖元素搭配攻略,以此来帮助诸位魔法师们在失落城堡2中都可以痛快的使用各种元素。 《失落城堡2》法杖元素搭配攻略 当前在失落城堡2中法杖可以使用的元素只要有冰、雷以及奥术,这三大元素也构建出...
DNF2026夏日版本元素技能数据表
2026-07-09DNF2026夏日版本快上线了,这个版本对大部分职业进行了改动,很多职业得到了加强,比如元素,那么DNF2026夏日版本元素技能数据怎么样?下面就给大家带来DNF2026夏日版本元素技能数据表。 DNF2026夏日版本元素技能数据表 元素师 本文内容来源于互联网,如有侵权请联系删除。
斗罗大陆:传承元素暴击队伍搭配思路
2026-07-07斗罗大陆传承元素暴击队伍怎么玩,本期为玩家量身推荐一套元素暴击队,让你轻松打出暴击伤害!该阵容使用马红俊和宁荣荣破法放大队伍元素伤害,唐三大须弥锤爆发元素伤害,下面就来看看这套阵容的具体配置与打法思路吧。 斗罗大陆:传承元素暴击队伍搭配思路: 一、元素暴击队 搭配思路:马红俊和宁荣荣破法放大队伍元素伤害,唐三大须弥锤爆发元素伤害 主C:唐三 流派:元素爆发 通用魂技 涅槃复苏、巨人杀手、冲锋号角、...
DNF18周年庆版本元素时装属性选择
2026-07-07DNF18周年庆版本很多职业技能得到了改动,新增了2个职业,对老职业也进行了平衡,比如元素,那么DNF18周年庆版本元素时装属性怎么选?下面就给大家带来DNF18周年庆版本元素时装属性选择。 DNF18周年庆版本元素时装属性选择 本文内容来源于互联网,如有侵权请联系删除。
《符文世界:龙之荒野》符文元素系统特点介绍
2026-07-07《符文世界:龙之荒野》中的符文元素系统是游戏里非常重要的一个特殊系统,而这个系统的特点有很多,首先是这个系统包括但不限于战斗和采集,我们需要通过挖掘或战利品获得符文精粹。 符文世界龙之荒野符文元素系统有什么特点 本文内容来源于互联网,如有侵权请联系删除。
DNF18周年庆版本元素毕业附魔推荐
2026-07-03DNF18周年庆版本很多职业技能得到了改动,新增了2个职业,对老职业也进行了平衡,比如元素,那么DNF18周年庆版本元素毕业附魔怎么选?下面就给大家带来DNF18周年庆版本元素毕业附魔推荐。 DNF18周年庆版本元素毕业附魔推荐 本文内容来源于互联网,如有侵权请联系删除。
《毁灭战士:黑暗时代》新DLC含10小时内容 引入类银河城探索元素
2026-07-03idSoftware于近日宣布,《毁灭战士:黑暗时代》的大型剧情扩展包“启示录”(Revelations)将于2026年7月7日正式推出。该DLC提供了约10至12小时的游戏内容,成为现代《毁灭战士》系列中规模最大的单人剧情扩展之一,远超《毁灭战士:永恒》此前的DLC体量。 “启示录”将引入五个全新地点,其中包括三个大型开放区域和两个较小规模场地。所有区域均由一个中枢枢纽(CentralHub)相...
DNF18周年庆版本元素毕业装备推荐
2026-06-27DNF18周年庆版本很多职业技能得到了改动,新增了2个职业,对老职业也进行了平衡,比如元素,那么DNF18周年庆版本元素毕业装备怎么选?下面就给大家带来DNF18周年庆版本元素毕业装备推荐。 DNF18周年庆版本元素毕业装备推荐 本文内容来源于互联网,如有侵权请联系删除。
DNF18周年庆版本元素加点攻略
2026-06-19DNF18周年庆版本很多职业技能得到了改动,新增了2个职业,对老职业也进行了平衡,比如元素,那么DNF18周年庆版本元素怎么加点?下面就给大家带来DNF18周年庆版本元素加点攻略。 DNF18周年庆版本元素加点攻略 【SP取舍技能】 若穿戴混沌净化,雷旋、冰墙小技能SP改45南瓜 技能强化选择黑洞,门,第三个续航考虑天雷,爆发考虑水晶或者地震。 【VP取舍技能】 天雷(35)——VP2天雷电阵,优...
DNF18周年庆版本元素技能数据表
2026-06-18DNF18周年庆版本很多职业技能得到了改动,新增了2个职业,对老职业也进行了平衡,比如元素,那么DNF18周年庆版本元素技能数据怎么样?下面就给大家带来DNF18周年庆版本元素技能数据表。 DNF18周年庆版本元素技能数据表 元素师 本文内容来源于互联网,如有侵权请联系删除。
