详解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通过apply使用元祖和列表调用函数实例
May 26 Python
在CentOS上配置Nginx+Gunicorn+Python+Flask环境的教程
Jun 07 Python
Python方法的延迟加载的示例代码
Dec 18 Python
基于并发服务器几种实现方法(总结)
Dec 29 Python
python3.X 抓取火车票信息【修正版】
Jun 19 Python
Python数据类型之String字符串实例详解
May 08 Python
Python学习笔记之Zip和Enumerate用法实例分析
Aug 14 Python
python求一个字符串的所有排列的实现方法
Feb 04 Python
python logging.basicConfig不生效的原因及解决
Feb 20 Python
基于FME使用Python过程图解
May 13 Python
Keras—embedding嵌入层的用法详解
Jun 10 Python
Python 第三方库 openpyxl 的安装过程
Dec 24 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获取新浪微博数据API实例
2013/11/12 PHP
PHP实现带重试功能的curl连接示例
2016/07/28 PHP
PHP精确到毫秒秒杀倒计时实例详解
2019/03/14 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
2020/02/27 PHP
PHP 对象继承原理与简单用法示例
2020/04/21 PHP
网站被黑的假象--ARP欺骗之页面中加入一段js
2007/05/16 Javascript
javascript制作幻灯片(360度全景图片)
2015/07/28 Javascript
深入理解ECMAScript的几个关键语句
2016/06/01 Javascript
jquery实现转盘抽奖功能
2017/01/06 Javascript
jQuery中ztree 点击文本框弹出下拉框的实例代码
2017/02/05 Javascript
javascript验证香港身份证的格式或真实性
2017/02/07 Javascript
bootstrap paginator分页插件的两种使用方式实例详解
2017/11/14 Javascript
一看就会的vuex实现登录验证(附案例)
2020/01/09 Javascript
使用Typescript和ES模块发布Node模块的方法
2020/05/25 Javascript
Python中shape计算矩阵的方法示例
2017/04/21 Python
Python入门_浅谈数据结构的4种基本类型
2017/05/16 Python
对python中xlsx,csv以及json文件的相互转化方法详解
2018/12/25 Python
python浪漫表白源码
2019/04/05 Python
nginx黑名单和django限速,最简单的防恶意请求方法分享
2019/08/09 Python
python实现视频读取和转化图片
2019/12/10 Python
opencv resize图片为正方形尺寸的实现方法
2019/12/26 Python
在主流系统之上安装Pygame的方法
2020/05/20 Python
html5通过postMessage进行跨域通信的方法
2017/12/04 HTML / CSS
美国花布包包品牌:Vera Bradley
2017/08/11 全球购物
Kangol帽子官网:坎戈尔袋鼠
2018/09/26 全球购物
一加手机美国官方网站:OnePlus美国
2019/09/19 全球购物
Big Green Smile法国:领先的英国有机和天然产品在线商店
2021/01/02 全球购物
《可爱的动物》教学反思
2014/02/22 职场文书
艺术设计专业求职自荐信
2014/05/19 职场文书
乡镇创先争优活动总结
2014/08/28 职场文书
税务会计岗位职责
2015/04/02 职场文书
2015年医院保卫科工作总结
2015/07/23 职场文书
孕妇病假条怎么写
2015/08/17 职场文书
家庭教育培训学习心得体会
2016/01/14 职场文书
导游词之江苏同里古镇
2019/11/18 职场文书
element多个表单校验的实现
2021/05/27 Javascript