方法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查找数组中出现次数最多的元素相关推荐

  1. python统计数组中出现次数最多的元素

    python查找数组中出现次数最多的元素 方法1-np.argmax(np.bincount()) array = [0,1,2,2,3,4,4,4,5,6] print(np.bincount(ar ...

  2. 利用HashMap找出数组中出现次数最多的元素及其次数

    我在牛客网上刷题时遇到了这道题目,因为初学Java不久,对Java的应用还不熟悉,刚开始用C语言做没做出来(我太菜了...),接着百度发现竟然可以用HashMap做,仔细一想发现这真是一个好办法(为什 ...

  3. Java实现找出数组中重复次数最多的元素以及个数

    /**数组中元素重复最多的数* @param array* @author shaobn* @param array*/public static void getMethod_4(int[] arr ...

  4. 辉太郎看前端(查找出字符串或数组中出现次数最多的字符)

    前言 利用字符串中的方法charAt(),返回指定下标位置的字符 字符串 // 1.统计次数var str = 'XMLHttpRequest';// 创建了一个空的对象,存储字符串中的每个字符.属性 ...

  5. Python找出列表中出现次数最多的元素三种方式

    通过三种方式给大家介绍,具体详情如下所示: 方式一: 原理:创建一个新的空字典,用循环的方式来获取列表中的每一个元素,判断获取的元素是否存在字典中的key,如果不存在的话,将元素作为key,值为列表中 ...

  6. python counter 出现次数最少的元素_[PY3]——找出一个序列中出现次数最多的元素/collections.Counter 类的用法...

    问题 怎样找出一个序列中出现次数最多的元素呢? 解决方案 collections.Counter 类就是专门为这类问题而设计的, 它甚至有一个有用的 most_common() 方法直接给了你答案 c ...

  7. java数组出现次数最多的数_找出数组中出现次数最多的那个数——主元素问题...

    方法一:以空间换时间,可以定义一个计数数组int count[101],用来对数组中数字出现的次数进行计数(只能针对数组中数字的范围1~100),count数组中最大的元素对应的下标,即为出现次数最多 ...

  8. python列表(list)中出现次数最多的元素使用collection包的Counter方法

    python列表(list)中出现次数最多的元素使用collection包的Counter方法 collections模块自Python 2.4版本开始被引入,包含了dict.set.list.tup ...

  9. 找出一个数组中出现次数最多的那个元素

    Description 找出一个数组中出现次数最多的那个元素 Input 多组输入,请处理到文件结束 每组第一行输入一个整数n(不大于20) 第二行输入n个整数 Output 找出n个整数中出现次数最 ...

最新文章

  1. IDEA中将代码块封装为方法,IDEA代码重构快捷键
  2. 一个很适合用来套用后台的框架
  3. 分享你的见解与经验|RocketMQ Summit 2022 议题征集中
  4. 送30块树莓派PICO 开发板!
  5. java如何在指定索引位置插入新元素
  6. linux qt5.9交叉编译,QT5.9移植
  7. 计算正方形面积和周长_寒假作业:长方形、正方形周长面积应用题,附答案
  8. 开关电源怎么测试文波_开关电源环路增益测试
  9. epoll的一个使用例子
  10. 建立.NET Core控制台应用程序以输出EXE?
  11. 清除centos上面kde软件的一个脚本,基本好用
  12. AXure破解授权码
  13. 最小割集Stoer-Wagner算法
  14. 怎么在服务器解压文件,云服务器怎么解压文件
  15. 一个微博热搜引发的故事
  16. 铁威马F2-NAS2评测(家用云存储NAS)
  17. 基于 STM32 和 NB-IoT 的可穿戴式老人防摔监测系统
  18. 辐射3特殊武器拿法(修正版)
  19. Android开发系列——实战篇5:自适应屏幕尺寸(超详细教程)
  20. 安装金山WPS2013造成的HTML5 file.type值异常

热门文章

  1. JVM垃圾回收的时候如何确定垃圾?什么是GC Roots?
  2. Move from SQL to SOQL
  3. VS 2012 NuGet错误
  4. [学习笔记]matlab
  5. MATLAB中sort函数对矩阵数进行排序
  6. 用CSS写出一个下拉菜单小箭头
  7. vscode pylint报错的问题
  8. LeetCode:3. Longest Substring Without Repeating Characters
  9. android线程栈默认大小,线程的默认最大堆栈大小 - Internet Information Services | Microsoft Docs...
  10. 可降阶的高阶微分方程