详解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 相关文章推荐
Django在Win7下的安装及创建项目hello word简明教程
Jul 14 Python
python通过文件头判断文件类型
Oct 30 Python
Python多线程爬虫实战_爬取糗事百科段子的实例
Dec 15 Python
Python语言描述随机梯度下降法
Jan 04 Python
Django rest framework实现分页的示例
May 24 Python
python3监控CentOS磁盘空间脚本
Jun 21 Python
PyQt5 QTable插入图片并动态更新的实例
Jun 18 Python
python实现中文文本分句的例子
Jul 15 Python
pycharm新建一个python工程步骤
Jul 16 Python
使用Python为中秋节绘制一块美味的月饼
Sep 11 Python
Python中读取文件名中的数字的实例详解
Dec 25 Python
4种方法python批量修改替换列表中元素
Apr 07 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经典的给图片加水印程序
2006/12/06 PHP
PHP实现生成透明背景的PNG缩略图函数分享
2014/07/08 PHP
使用 PHPStorm 开发 Laravel
2015/03/24 PHP
举例详解PHP脚本的测试方法
2015/08/05 PHP
PHP面向对象五大原则之单一职责原则(SRP)详解
2018/04/04 PHP
PHP排序算法之希尔排序(Shell Sort)实例分析
2018/04/20 PHP
任意位置显示html菜单
2007/02/01 Javascript
理解 JavaScript 预解析
2009/10/25 Javascript
AngularJS实现路由实例
2017/02/12 Javascript
Vue 仿百度搜索功能实现代码
2017/02/16 Javascript
JS简单获取日期相差天数的方法
2017/04/24 Javascript
利用vue+elementUI实现部分引入组件的方法详解
2017/11/22 Javascript
vue.js配合$.post从后台获取数据简单demo分享
2018/08/11 Javascript
JavaScript设计模式之享元模式实例详解
2019/01/17 Javascript
vue-router的两种模式的区别
2019/05/30 Javascript
jquery实现商品sku多属性选择功能(商品详情页)
2019/12/20 jQuery
vue+element实现图片上传及裁剪功能
2020/06/29 Javascript
[19:15]DK战队纪录片
2014/09/02 DOTA
利用soaplib搭建webservice详细步骤和实例代码
2013/11/20 Python
用Python遍历C盘dll文件的方法
2015/05/06 Python
Python3实现将文件树中所有文件和子目录归档到tar压缩文件的方法
2015/05/22 Python
Python获取SQLite查询结果表列名的方法
2017/06/21 Python
解决Python plt.savefig 保存图片时一片空白的问题
2019/01/10 Python
使用python将excel数据导入数据库过程详解
2019/08/27 Python
python yield关键词案例测试
2019/10/15 Python
详解Scrapy Redis入门实战
2020/11/18 Python
BIBLOO捷克:购买女装、男装、童装、鞋和配件
2017/01/27 全球购物
英国度假别墅预订:Sykes Cottages
2017/06/12 全球购物
系统管理员的职责包括那些?管理的对象是什么?
2013/01/18 面试题
中专毕业生个人职业生涯规划
2014/02/19 职场文书
《青蛙看海》教学反思
2014/04/23 职场文书
第一批党的群众路线教育实践活动总结报告
2014/07/03 职场文书
机关单位工作失职检讨书
2014/11/20 职场文书
异地恋情人节寄语
2015/02/28 职场文书
担保书格式范文
2015/09/22 职场文书
导游词之澳门玫瑰圣母堂
2019/12/03 职场文书