详解numpy的argmax的具体使用


Posted in Python onMay 27, 2019

从最简单的例子出发

假定现在有一个数组a = [3, 1, 2, 4, 6, 1]现在要算数组a中最大数的索引是多少.这个问题对于刚学编程的同学就能解决.最直接的思路,先假定第0个数最大,然后拿这个和后面的数比,找到大的就更新索引.代码如下

a = [3, 1, 2, 4, 6, 1]
maxindex = 0
i = 0
for tmp in a:
  if tmp > a[maxindex]:
    maxindex = i
  i += 1
print(maxindex)

这个问题虽然简单.但是可以帮助我们理解argmax.

解释

还是从一维数组出发.看下面的例子.

import numpy as np
a = np.array([3, 1, 2, 4, 6, 1])
print(np.argmax(a))

argmax返回的是最大数的索引.argmax有一个参数axis,默认是0,表示第几维的最大值.看二维的情况.

import numpy as np
a = np.array([[1, 5, 5, 2],
       [9, 6, 2, 8],
       [3, 7, 9, 1]])
print(np.argmax(a, axis=0))

为了描述方便,a就表示这个二维数组.np.argmax(a, axis=0)的含义是a[0][j],a[1][j],a[2][j](j=0,1,2,3)中最大值的索引.从a[0][j]开始,最大值索引最初为(0,0,0,0),拿a[0][j]和a[1][j]作比较,9大于1,6大于5,8大于2,所以最大值索引由(0,0,0,0)更新为(1,1,0,1),再和a[2][j]作比较,7大于6,9大于5所以更新为(1,2,2,1).再分析下面的输出.

import numpy as np
a = np.array([[1, 5, 5, 2],
       [9, 6, 2, 8],
       [3, 7, 9, 1]])
print(np.argmax(a, axis=1))

np.argmax(a, axis=1)的含义是a[i][0],a[i][1],a[i][2],a[i][3](i=0,1,2)中最大值的索引.从a[i][0]开始,a[i][0]对应的索引为(0,0,0),先假定它就是最大值索引(思路和上节简单例子完全一致)拿a[i][0]和a[i][1]作比较,5大于1,7大于3所以最大值索引由(0,0,0)更新为(1,0,1),再和a[i][2]作比较,9大于7,更新为(1,0,2),再和a[i][3]作比较,不用更新,最终值为(1,0,2)
再看三维的情况.

import numpy as np
a = np.array([
       [
         [1, 5, 5, 2],
         [9, -6, 2, 8],
         [-3, 7, -9, 1]
       ],

       [
         [-1, 5, -5, 2],
         [9, 6, 2, 8],
         [3, 7, 9, 1]
       ]
      ])
print(np.argmax(a, axis=0))

np.argmax(a, axis=0)的含义是a[0][j][k],a[1][j][k] (j=0,1,2,k=0,1,2,3)中最大值的索引.从a[0][j][k]开始,a[0][j][k]对应的索引为((0,0,0,0),(0,0,0,0),(0,0,0,0)),拿a[0][j][k]和a[1][j][k]对应项作比较6大于-6,3大于-3,9大于-9,所以更新这几个位置的索引,将((0,0,0,0),(0,0,0,0),(0,0,0,0))更新为((0,0,0,0),(0,1,0,0),(1,0,1,0)). 再看axis=1的情况.

import numpy as np
a = np.array([
       [
         [1, 5, 5, 2],
         [9, -6, 2, 8],
         [-3, 7, -9, 1]
       ],

       [
         [-1, 5, -5, 2],
         [9, 6, 2, 8],
         [3, 7, 9, 1]
       ]
      ])
print(np.argmax(a, axis=1))

np.argmax(a, axis=1)的含义是a[i][0][k],a[i][1][k] (i=0,1,k=0,1,2,3)中最大值的索引.从a[i][0][k]开始,a[i][0][k]对应的索引为((0,0,0,0),(0,0,0,0)),拿a[i][0][k]和a[i][1][k]对应项作比较,9大于1,8大于2,9大于-1,6大于5,2大于-5,8大于2,所以更新这几个位置的索引,将((0,0,0,0),(0,0,0,0))更新为((1,0,0,1),(1,1,1,1)),现在最大值对应的数组为((9,5,5,8),(9,6,2,8)).再拿((9,5,5,8),(9,6,2,8))和a[i][2][k]对应项从比较,7大于5,7大于6,9大于2.更新这几个位置的索引.将((1,0,0,1),(1,1,1,1))更新为((1,2,0,1),(1,2,2,1)).axis=2的情况也是类似的.

参考资料

numpy官方文档

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
下载给定网页上图片的方法
Feb 18 Python
Python基于twisted实现简单的web服务器
Sep 29 Python
用Python实现一个简单的多线程TCP服务器的教程
May 05 Python
Python操作使用MySQL数据库的实例代码
May 25 Python
基于python的字节编译详解
Sep 20 Python
利用python如何处理百万条数据(适用java新手)
Jun 06 Python
利用Python写一个爬妹子的爬虫
Jun 08 Python
Python实现iOS自动化打包详解步骤
Oct 03 Python
python 通过类中一个方法获取另一个方法变量的实例
Jan 22 Python
python检查目录文件权限并修改目录文件权限的操作
Mar 11 Python
浅谈sklearn中predict与predict_proba区别
Jun 28 Python
Python定义一个Actor任务
Jul 29 Python
numpy.random模块用法总结
May 27 #Python
Django框架自定义session处理操作示例
May 27 #Python
numpy concatenate数组拼接方法示例介绍
May 27 #Python
详解Numpy中的数组拼接、合并操作(concatenate, append, stack, hstack, vstack, r_, c_等)
May 27 #Python
python安装numpy和pandas的方法步骤
May 27 #Python
numpy库与pandas库axis=0,axis= 1轴的用法详解
May 27 #Python
Python之NumPy(axis=0 与axis=1)区分详解
May 27 #Python
You might like
PHP执行SQL文件并将SQL文件导入到数据库
2015/09/17 PHP
php验证邮箱和ip地址最简单方法汇总
2015/10/30 PHP
javascript 控制 html元素 显示/隐藏实现代码
2009/09/01 Javascript
事件绑定之小测试  onclick && addEventListener
2011/07/31 Javascript
js arguments对象应用介绍
2012/11/28 Javascript
Javascript Request获取请求参数如何实现
2012/11/28 Javascript
GRID拖拽行的实例代码
2013/07/18 Javascript
实现只能输入数字的input不用replace方法
2013/09/12 Javascript
js使用post 方式打开新窗口
2015/02/26 Javascript
JavaScript设置表单上传时文件个数的方法
2015/08/11 Javascript
浅谈Javascript数据属性与访问器属性
2016/07/26 Javascript
JavaScript组合模式学习要点
2016/08/26 Javascript
详解jQuery中的DOM操作
2016/12/23 Javascript
ES6中Class类的静态方法实例小结
2017/10/28 Javascript
vue 左滑删除功能的示例代码
2019/01/28 Javascript
详解vue 自定义marquee无缝滚动组件
2019/04/09 Javascript
Vue-CLI项目中路由传参的方式详解
2019/09/01 Javascript
原生js实现的金山打字小游戏(实例代码详解)
2020/03/16 Javascript
[11:12]2018DOTA2国际邀请赛寻真——绿色长城OpTic
2018/08/10 DOTA
完美解决Python matplotlib绘图时汉字显示不正常的问题
2019/01/29 Python
python设置环境变量的作用和实例
2019/07/09 Python
Python如何使用input函数获取输入
2020/08/06 Python
python实现暗通道去雾算法的示例
2020/09/27 Python
python安装第三方库如xlrd的方法
2020/10/31 Python
python实现图片转字符画的完整代码
2021/02/21 Python
浅谈Python xlwings 读取Excel文件的正确姿势
2021/02/26 Python
英国手机壳购买网站:Case Hut
2019/04/11 全球购物
俄罗斯电子产品在线商店:UltraTrade
2020/01/30 全球购物
九年级政治教学反思
2014/02/06 职场文书
珍惜资源保护环境的建议书
2014/05/14 职场文书
领导干部查摆“四风”问题自我剖析材料思想汇报
2014/10/05 职场文书
教师调动申请报告
2015/05/18 职场文书
2015年学校办公室工作总结
2015/05/26 职场文书
党支部季度考核意见
2015/06/02 职场文书
2016入党积极分子党课培训心得体会
2016/01/06 职场文书
2016个人廉洁自律承诺书
2016/03/25 职场文书