python查找数组中出现次数最多的元素
方法1-np.argmax(np.bincount())
看一个例子
array = [0,1,2,2,3,4,4,4,5,6] print(np.bincount(array)) print(np.argmax(np.bincount(array)))#[1 1 2 1 3 1 1] #4
这里用到了两个函数,np.argmax和np.bincount,第一个很常见,就是返回数组中最大值对应的下标,np.bincount可以通过上面的例子理解:首先找到数组最大值max,然后返回0~max的各个数字出现的次数,在上例中,0出现了1次,1出现了1次,2出现了2次...以此类推。
为什么这两个函数合起来可以找到出现次数最多的元素呢?因为np.bincount返回的数组中的下标对应的就是原数组的元素值,如上例中np.argmax找到np.bincount返回的数组中的最大值3(原数组中4出现了3次),其对应的下标4正是原数组中的元素4,如此就可以找到数组中出现次数最多的元素。
但是这种方法有一个缺陷,即bincount只能统计0~max出现的次数,所以这种方法仅适用于非负数组
方法2-Counter().most_common(1)[0][0]
看一个例子
from collections import Counter array = [0,1,2,2,3,4,4,4,5,6] print(Counter(array)) print(Counter(array).most_common(1)[0][0])#Counter({4: 3, 2: 2, 0: 1, 1: 1, 3: 1, 5: 1, 6: 1}) #4
Counter用来对数组中元素出现次数进行统计,然后通过most_common函数找到出现次数最多的元素。这种方法对于数组就没有过多限制,甚至是各种类型元素混合的数组也可以
from collections import Counter array = [0,1,2,2,3,4,4,4,5,6,'aswd'] print(Counter(array)) print(Counter(array).most_common(1)[0][0])#Counter({4: 3, 2: 2, 0: 1, 1: 1, 3: 1, 5: 1, 6: 1, 'aswd': 1}) #4
关于most_common函数可以通过下面的例子加深理解:
方法三
自己数各个元素出现的次数然后找到出现次数最多的元素
appear_times = {} for label in [1,1,2,3,4,5,5,5]:if label in appear_times:appear_times[label] += 1else:appear_times[label] = 1most_common = max(appear_times, key=lambda x: appear_times[x]) print(appear_times) print(most_common)#{1: 2, 2: 1, 3: 1, 4: 1, 5: 3} #5
这里需要注意的是appear_times是一个列表,用max求最大值默认情况返回value值(出现次数)最大的key值(元素),而不是value值,这里max函数中的参数key(和前面说的key不是一个东西)是指定寻找最大值的方式,在我们这个问题这里其实不需要这个参数,不过为了便于理解我还是写上了,对max函数key参数更深入的理解可以参考下面的例子:
print(max('ahecsc', 'bfsacg', 'aaaaaz', key=lambda x: x[0])) print(max('ahecsc', 'bfsacg', 'aaaaaz', key=lambda x: x[3])) print(max('ahecsc', 'bfsacg', 'aaaaaz', key=lambda x: x[5]))#bfsacg #ahecsc #aaaaaz
同样的数据,key参数不同,结果不同,第一种情况是以数据的第一个位置元素的大小关系排序,并返回排序结果最大的数据('b'>'a'>'a',返回'b'所在的'bfsacg');第二种情况类似('c'>'a'>'a',返回'c'所在的'ahecsc');第三种情况('z'>'g'>'c',返回'z'所在的'aaaaaz')
目前我只知道这三种方法,如果有大佬知道更多好用的办法,欢迎留言?:)
转载于:https://www.cnblogs.com/RB26DETT/p/11518589.html
python查找数组中出现次数最多的元素相关推荐
- python统计数组中出现次数最多的元素
python查找数组中出现次数最多的元素 方法1-np.argmax(np.bincount()) array = [0,1,2,2,3,4,4,4,5,6] print(np.bincount(ar ...
- 利用HashMap找出数组中出现次数最多的元素及其次数
我在牛客网上刷题时遇到了这道题目,因为初学Java不久,对Java的应用还不熟悉,刚开始用C语言做没做出来(我太菜了...),接着百度发现竟然可以用HashMap做,仔细一想发现这真是一个好办法(为什 ...
- Java实现找出数组中重复次数最多的元素以及个数
/**数组中元素重复最多的数* @param array* @author shaobn* @param array*/public static void getMethod_4(int[] arr ...
- 辉太郎看前端(查找出字符串或数组中出现次数最多的字符)
前言 利用字符串中的方法charAt(),返回指定下标位置的字符 字符串 // 1.统计次数var str = 'XMLHttpRequest';// 创建了一个空的对象,存储字符串中的每个字符.属性 ...
- Python找出列表中出现次数最多的元素三种方式
通过三种方式给大家介绍,具体详情如下所示: 方式一: 原理:创建一个新的空字典,用循环的方式来获取列表中的每一个元素,判断获取的元素是否存在字典中的key,如果不存在的话,将元素作为key,值为列表中 ...
- python counter 出现次数最少的元素_[PY3]——找出一个序列中出现次数最多的元素/collections.Counter 类的用法...
问题 怎样找出一个序列中出现次数最多的元素呢? 解决方案 collections.Counter 类就是专门为这类问题而设计的, 它甚至有一个有用的 most_common() 方法直接给了你答案 c ...
- java数组出现次数最多的数_找出数组中出现次数最多的那个数——主元素问题...
方法一:以空间换时间,可以定义一个计数数组int count[101],用来对数组中数字出现的次数进行计数(只能针对数组中数字的范围1~100),count数组中最大的元素对应的下标,即为出现次数最多 ...
- python列表(list)中出现次数最多的元素使用collection包的Counter方法
python列表(list)中出现次数最多的元素使用collection包的Counter方法 collections模块自Python 2.4版本开始被引入,包含了dict.set.list.tup ...
- 找出一个数组中出现次数最多的那个元素
Description 找出一个数组中出现次数最多的那个元素 Input 多组输入,请处理到文件结束 每组第一行输入一个整数n(不大于20) 第二行输入n个整数 Output 找出n个整数中出现次数最 ...
最新文章
- IDEA中将代码块封装为方法,IDEA代码重构快捷键
- 一个很适合用来套用后台的框架
- 分享你的见解与经验|RocketMQ Summit 2022 议题征集中
- 送30块树莓派PICO 开发板!
- java如何在指定索引位置插入新元素
- linux qt5.9交叉编译,QT5.9移植
- 计算正方形面积和周长_寒假作业:长方形、正方形周长面积应用题,附答案
- 开关电源怎么测试文波_开关电源环路增益测试
- epoll的一个使用例子
- 建立.NET Core控制台应用程序以输出EXE?
- 清除centos上面kde软件的一个脚本,基本好用
- AXure破解授权码
- 最小割集Stoer-Wagner算法
- 怎么在服务器解压文件,云服务器怎么解压文件
- 一个微博热搜引发的故事
- 铁威马F2-NAS2评测(家用云存储NAS)
- 基于 STM32 和 NB-IoT 的可穿戴式老人防摔监测系统
- 辐射3特殊武器拿法(修正版)
- Android开发系列——实战篇5:自适应屏幕尺寸(超详细教程)
- 安装金山WPS2013造成的HTML5 file.type值异常
热门文章
- JVM垃圾回收的时候如何确定垃圾?什么是GC Roots?
- Move from SQL to SOQL
- VS 2012 NuGet错误
- [学习笔记]matlab
- MATLAB中sort函数对矩阵数进行排序
- 用CSS写出一个下拉菜单小箭头
- vscode pylint报错的问题
- LeetCode:3. Longest Substring Without Repeating Characters
- android线程栈默认大小,线程的默认最大堆栈大小 - Internet Information Services | Microsoft Docs...
- 可降阶的高阶微分方程