在numpy与pandas中,快速找出mode(众数)

一位朋友突然问我说,numpy中,如何找出一维数组和二维数组(矩阵)中的mode,我当然说我知道怎么找啊,等我回家后再写一下代码就知道了。。。,心里在想,numpy和pandas的常用函数和方法就那些,好像没有直接找出1个mode或多个mode的方法?于是就尝试着先不去stackoverflow找解法,自己动手先写一个自定义函数,看是否能实现这个功能,思路是这样的,先从最简单的数据结构开始,将numpy的一维数组,转成Python list,再使用counter配合循环计算频数,循环2次后再两两比较,然后取出最大值,ok,写好了,亲测有效,请见下图:

可是我这个方法太笨了,而且也不适用于二维数组,甚至要使用嵌套的for循环才能实现对二维数组的操作,太费脑子了,身为宇宙第一语言的Python,一定会有更简洁的方法,stackoverflow搜下,果然有的,嘿嘿,原来用scipy库的stats的这个统计模块,就可实现,代码如下:

另外,我原先写的代码,也可以优化成以下这几行,使用numpy的bincount()搭配argmax()即可,请见下面优化后的代码(此方法不适用于二维数组):

但事实上,还有更为方便的方法,能更快找出mode,那就是将一维数组转成Pandas的Series,将二维数组转成Pandas的DataFrame,然后调用Pandas的mode()方法,一切搞定,就几行代码而已,比如df.mode(),以下为重构后的代码:

在numpy与pandas中,快速找出mode(众数)相关推荐

  1. VS(Visual Studio)中快速找出含中文的字符串

    环境:visual studio 2017 1.ctrl + shift + f 打卡全局查找 2.输入(".*[\u4E00-\u9FA5]+)|([\u4E00-\u9FA5]+.*&q ...

  2. 易语言取c盘文件夹中的文件被占用,win7系统怎么快速找出文件被什么进程占用|win7解除文件占用的方法...

    ‍‍ 很多时候我们想删除文件或文件夹的时候,会出现文件正在使用的提示导致文件无法删除,如果知道是什么程序在使用这个文件好,但多数时候我们并不知道是被什么程序占用,那么在win7系统怎么快速找出文件被什 ...

  3. 如何快速找出一个数组中最大数和第二大数

    看到一道题是:快速找出一个数组中最大数和第二大数. 我之前学了一些数组排序,例如冒泡排序,简单选择排序等等,然后我就想可不可以利用冒泡排序来实现呢?之前写过冒泡排序实现从小到大的排列,那么可以改成从大 ...

  4. 快速找出一个数组中的最大数、第二大数

    http://blog.csdn.net/hackbuteer1/article/details/8035261#comments 快速找出一个数组中的最大数.第二大数 思路:如果当前元素大于最大数 ...

  5. js 快速找出两个数组中的不同元素或对象

    js 快速找出两个数组中的不同元素 var arr1 = [0,1,2,3,4,5]; var arr2 = [0,4,6,1,3,9]; function getArrDifference(arr1 ...

  6. 快速找出一个数组中的两个数字,让这两个数字之和等于一个给定的值

    我觉得写得很清晰,希望没有侵犯作者的著作权,原文地址http://blog.csdn.net/hackbuteer1/article/details/6699642 快速找出一个数组中的两个数字,让这 ...

  7. 快速找出QQ群成员中不在名单内的人

    快速找出QQ群成员中不在名单内的人 Created: Aug 15, 2020 10:21 PM Tags: Python, 计划中 Updated: Aug 17, 2020 10:45 PM 需求 ...

  8. 如何快速找出Linux系统中的大文件?

    今日主题: 如何快速找出Linux系统中的大文件? 在前面的文章中,我们讲到了压测时磁盘空间被占满的问题,可以跟今天的文章结合着看. 在性能测试中,我们经常要关注系统磁盘空间,防止因磁盘空间占满而导致 ...

  9. 快速找出两个字符串中所有相同的字符

    面试时看到一个试题, 编写算法, 快速找出两个字符串中所有相同的字符. 现实现如下: 1. 利用TreeSet来查找是否有相同的字符(之前是利用TreeSet来查找) 2. 利用HashSet来查找是 ...

最新文章

  1. Content-Type: application/vnd.ms-excel
  2. Linux下计划任务和标准化工作流程
  3. AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML)
  4. 软件分享:将应用一键打包成dmg文件
  5. Get Started with Service Metrics
  6. oracle 触发器的种类和触发事件
  7. 近似与精确——《狂人C》习题解答15(第三章习题5)
  8. The import com.sun.tools cannot be resolved
  9. ICPC 2019-2020 North-Western Russia Regional Contest 补题部分
  10. 服务器部署ssl证书,Apache服务器SSL证书部署
  11. Informatica_(2)第一个例子
  12. Facebook提高工作效率的秘密 ,值得收藏
  13. 智能科学与技术——介绍概要
  14. 叩丁狼java培训:LinkedList的原理介绍
  15. html简繁替换,Web界面简繁体转换
  16. photoshop批处理改变图片大小
  17. 云服务器测速脚本_Superspeed.sh:包含很多个测速节点的 VPS 一键测速脚本
  18. linux mysql5.7.11_Centos7.2 Systemd 方式编译 Mysql5.7.11
  19. 输入两个自然数min,max,计算、输出[min,max]中的超级素数的个数#C语言
  20. matlab park clark,[转载]park,clark和ipark浅析

热门文章

  1. Windows网络基础
  2. 更改电脑屏幕为护眼模式
  3. 当当网又搞双12优惠
  4. dz怎样增加php邮箱注册,Discuz!限制用户注册使用固定邮箱(Email)
  5. Eclipse的UML插件Green
  6. Ubuntu 使用 latex
  7. Loser应该知道的6个残酷人生事实(血泪翻译)
  8. Java map按照值降序排列
  9. Linux高性能计算集群 -- Beowulf集群
  10. Unity中通过Gizmos绘制OverlapBox