详解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 相关文章推荐
基于Python的身份证号码自动生成程序
Aug 15 Python
Using Django with GAE Python 后台抓取多个网站的页面全文
Feb 17 Python
python3实现跳一跳点击跳跃
Jan 08 Python
Python+OpenCV实现车牌字符分割和识别
Mar 31 Python
django请求返回不同的类型图片json,xml,html的实例
May 22 Python
python xpath获取页面注释的方法
Jan 14 Python
python 堆和优先队列的使用详解
Mar 05 Python
Django中的FBV和CBV用法详解
Sep 15 Python
Python常用模块sys,os,time,random功能与用法实例分析
Jan 07 Python
pytorch nn.Conv2d()中的padding以及输出大小方式
Jan 10 Python
PyCharm汉化安装及永久激活详细教程(靠谱)
Jan 16 Python
Keras多线程机制与flask多线程冲突的解决方案
May 28 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开发框架kohana3 自定义路由设置示例
2014/07/14 PHP
PHP实现的线索二叉树及二叉树遍历方法详解
2016/04/25 PHP
PHP控制前台弹出对话框的实现方法
2016/08/21 PHP
Laravel框架Eloquent ORM删除数据操作示例
2019/12/03 PHP
扩展String功能方法
2006/09/22 Javascript
幻宇的层模拟窗口效果-提供演示和下载
2007/01/20 Javascript
js通过元素class名字获取元素集合的具体实现
2014/01/06 Javascript
JavaScript 模块化编程(笔记)
2015/04/08 Javascript
javascript数组去重方法汇总
2015/04/23 Javascript
jQuery实现的向下图文信息滚动效果
2015/05/03 Javascript
jquery实现左右滑动菜单效果代码
2015/08/27 Javascript
js密码强度校验
2015/11/10 Javascript
jquery实现数字输入框
2017/02/22 Javascript
深入理解Vue生命周期、手动挂载及挂载子组件
2017/09/27 Javascript
react redux入门示例
2018/04/19 Javascript
Vue使用Proxy监听所有接口状态的方法实现
2019/06/07 Javascript
Vue组件模板及组件互相引用代码实例
2020/03/11 Javascript
[01:20:38]完美世界DOTA2联赛 GXR vs IO 第一场 11.07
2020/11/09 DOTA
python  创建一个保留重复值的列表的补码
2018/10/15 Python
解决python xlrd无法读取excel文件的问题
2018/12/25 Python
Python 读取有公式cell的结果内容实例方法
2020/02/17 Python
Python基于模块Paramiko实现SSHv2协议
2020/04/28 Python
Python无损压缩图片的示例代码
2020/08/06 Python
Python用dilb提取照片上人脸的示例
2020/10/26 Python
html5小程序飞入购物车(抛物线绘制运动轨迹点)
2020/10/19 HTML / CSS
Simons官方网站:加拿大时尚零售商
2020/02/20 全球购物
技校生自我鉴定范文
2013/09/26 职场文书
个人优缺点自我评价
2014/01/27 职场文书
小学教师节活动方案
2014/01/31 职场文书
标准的毕业生自荐信
2014/04/20 职场文书
中国梦演讲稿5分钟
2014/08/19 职场文书
2014年学校体育工作总结
2014/12/08 职场文书
毕业论文答辩开场白和答辩技巧
2015/05/27 职场文书
法制工作总结2015
2015/07/23 职场文书
《静夜思》教学反思
2016/02/17 职场文书
python接口测试返回数据为字典取值方式
2022/02/12 Python