本文以np.argmin()进行讲解,np.argmax()与之类似,np.argmin()求最小值对应的索引,np.argmax()求最大值对应的索引

首先看一下官方注释

def argmin(a, axis=None, out=None):"""Returns the indices of the minimum values along an axis.Parameters----------a : array_likeInput array.axis : int, optionalBy default, the index is into the flattened array, otherwisealong the specified axis.out : array, optionalIf provided, the result will be inserted into this array. It shouldbe of the appropriate shape and dtype.

该函数最重要的参数为axis,np.argmin(a, axis=指定值)求的就是a在指定的第axis维度(轴)上的最小值对应的位置索引,若a中在指定轴上有多个最小值,则返回第一个最小值的索引,axis的取值范围就是数据维数的取值范围。其中a可能为list类型,也可能为array类型。

1.若参数a为list类型

np.argmin(a)返回将a中所有元素全部按照原有顺序拉直摊平之后,第一个最小值在其中的位置,举例说明:

import numpy as nplst1=[1,100,56,78,0]
lst2=[[100,0,5],[3,0,7],[5,0,6]]
print("lst列表中的最小值是:")
print(np.min(lst1))
# 仅有一个最小值的情况
print("lst1列表中最小值的索引是:")
print(np.argmin(lst1))
# 有多个最小值的情况
print("lst2列表中最小值的索引是:")
print(np.argmin(lst2))

结果:

2.若参数a为array类型

如果不设置axis的值,则函数默认将a所有数据平铺成一维数组,然后返回其中最小值在平铺序列中的位置,如:

import numpy as np# 一维数组
a=np.array([3, 1, 2, 4, 6, 1])
bb=np.argmin(a)
print('一维数组不设置axis时默认输出结果:')
print(bb)# 二维数组
a=np.array([[1, 5, 5, 2],[9, 6, 2, 8],[3, 7, 9, 1]])
bb=np.argmin(a)
print('二维数组不设置axis时默认输出结果:')
print(bb)# 三维数组
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]]])bb=np.argmin(a)
print('三维数组不设置axis时默认输出结果:')
print(bb)

结果为:

 也就是说如果对于array类型的变量a,在应用np.argmin(a)时返回值仅为一个数,返回的是a中所有元素的最小值在平铺a之后的序列中的位置。

(1)一维数组

返回array中数值最小数的下标,默认将输入array视作一维,出现相同的最小,返回第一次出现的

import numpy as np
a=np.array([3, 1, 2, 4, 6, 1])
bb=np.argmin(a)
print(bb)    # bb的值为1

(2)二维数组 

二维数组(m*n)假设有m行n列,则每个元素的索引一般写作a[i][j],其中i=0,1,...m-1,j=0,1,...n-1,i代表元素在第0维上的位置,j代表元素在第1维上的位置。返回值类型为array类型,返回值的长度与第axis维度的各个数据的长度一致。

axis=0,对第0维进行分析:比较j取同一值时,不同的i所指向的元素之间的大小关系,并返回最小值在第axis维度上的索引,返回值是长度为n的一维数组;

axis=1,对第1维进行分析:比较i取同一值时,不同的j所指向的元素之间的大小关系,并返回最小值在第axis维度上的索引,返回值是长度为m的一维数组;

举例说明(m=3,n=4):

a=np.array([[1, 5, 5, 2],[9, 6, 2, 8],[3, 7, 9, 1]])
bb=np.argmin(a,axis=0)    # 当axis=0时,表示返回列方向上数值最大值下标
cc=np.argmin(a,axis=1)    # 当axis=1时,表示返回行方向上数值最大值下标
print('axis=0的结果为:')
print(bb) # bb为[0 0 1 2]
print('axis=1的结果为:')
print(cc) # cc为[0 2 3]

结果为:

 (3)三维数组

三维数组(m*n*z)假设第0维长度为m,第一维长度为n,第二维长度为z,则每个元素的索引一般写作a[i][j][k],其中i=0,1,...m-1,j=0,1,...n-1,k=0,1,...z-1,i代表元素在第0维上的位置,j代表元素在第1维上的位置,k代表元素在第2维上的位置。返回值类型为array类型,返回值的类型与第axis维度的各个数据的类型和维数一致。

axis=0表示对第0维进行比较,当j与k取相同值时,不同的i所对应的值的大小关系,返回其中最小值在第0维上的索引,第0维是m个n*z维的二维数组,所以返回数据的类型为n*z维的二维数组;

axis=1表示对第1维进行比较,当i与k取相同值时,不同的j所对应的值的大小关系,返回其中最小值在第1维上的索引,第1维是n个m*z维的二维数组,所以返回数据的类型为m*z维的二维数组;

axis=2表示对第2维进行比较,当i与j取相同值时,不同的k所对应的值的大小关系,返回其中最小值在第2维上的索引,第2维是z个m*n维的二维数组,所以返回数据的类型为m*n维的二维数组;

举例说明(m=2,n=3,z=4):

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]]])bb=np.argmin(a,axis=0)    # 与bb=np.argmin(a,axis=-3)效果相同
cc=np.argmin(a,axis=1)    # 与cc=np.argmin(a,axis=-2)效果相同
dd=np.argmin(a,axis=2)    # 与dd=np.argmin(a,axis=-1)效果相同
print('axis=0的结果为:')
print(bb)
print('axis=1的结果为:')
print(cc)
print('axis=2的结果为:')
print(dd)

结果为:

依此类推,对于更高维度的数组,例如np.argmin(a,axis=t)返回的就是该数组a在其它维度取相同值时,而第t维度变化时取到的最小值,返回值类型为原数组a去除掉第t维度后其余维度长度不变所形成的数组类型。

全网最详细numpy的argmin与argmax解析(一次性理解np.argmin)相关推荐

  1. 全网最详细JavaScript防抖、节流函数解析

    防抖与节流 防抖与节流 防抖 作用与简介 实现 核心与细节 应用场景 节流 作用与简介 实现 核心与细节 应用场景 防抖与节流 防抖 作用与简介 在一个周期T内,如果重复的进行某种响应操作,在不设置防 ...

  2. 毕业设计 : 车牌识别系统实现【全网最详细】 - opencv 卷积神经网络 机器学习 深度学习

    文章目录 0 简介 1 车牌识别原理和流程 1.1 车牌定位 1.2 基于图形图像学的定位方法. 1.3 基于机器学习的定位方法. 1.4 字符分割 1.5 字符识别 2 基于机器学习的车牌识别 2. ...

  3. Python基础——min/max与np.argmin/np.argmax

    这里应该是拿min/max(更适合处理可迭代对象,可选的参数是key=func)与np.min/np.max(可适合处理numpy.ndarray对象,可选的参数是axis=0或者1)作比较,只不过n ...

  4. 理解np.max、np.min、np.argmax、np.argmin以及np.sum中的axis参数

    np.max.np.min.np.argmax.np.argmin以及np.sum方法均可设置axis参数,设置axis参数后,对应地,函数方法将沿着axis代表的轴的方向进行相应的数学运算.进行数学 ...

  5. 一个全网最详细的Python教程

    光从编程的难易度来说,Python 简单&易学,零基础.跨专业都很容易上手.(想学全网最详细 Python 教程,那一定要看看哦~) 从就业前景来看,很多个领域都使用了 Python ,比如大 ...

  6. “是男人就下一百层”h5游戏全网最详细教学、全代码,js操作

    "是男人就下一百层"h5游戏全网最详细教学.全代码,js操作 博主的话 游戏展示 编程工具介绍 游戏代码 代码讲解 js 第一步 切换div的显示与隐藏 js 第二步 在菜单页面用 ...

  7. 全网最详细的Windows里Anaconda-Navigator启动后闪退的解决方案(图文详解)

    全网最详细的Windows里Anaconda-Navigator启动后闪退的解决方案(图文详解) 参考文章: (1)全网最详细的Windows里Anaconda-Navigator启动后闪退的解决方案 ...

  8. 全网最详细的大数据集群环境下如何正确安装并配置多个不同版本的Cloudera Hue(图文详解)...

    不多说,直接上干货! 为什么要写这么一篇博文呢? 是因为啊,对于Hue不同版本之间,其实,差异还是相对来说有点大的,具体,大家在使用的时候亲身体会就知道了,比如一些提示和界面. 全网最详细的大数据集群 ...

  9. np.argmin和argmax

    np.argmin(,axis=) 若没有确定axis,则会得到所有元素最小的值的索引,整个索引值是将数组全部转换为一个维度时的位置索引. import numpy as npb = np.rando ...

  10. 全网最详细的HBase启动以后,HMaster进程启动了,几秒钟以后自动关闭问题的解决办法(图文详解)

    全网最详细的HBase启动以后,HMaster进程启动了,几秒钟以后自动关闭问题的解决办法(图文详解) 参考文章: (1)全网最详细的HBase启动以后,HMaster进程启动了,几秒钟以后自动关闭问 ...

最新文章

  1. Android开发3g、wap、net的区别
  2. Windows 技术篇 - 电脑秒速关机设置方法,注册表修改3个缓冲等待时间
  3. vivado2017.4启动时提示的“error when launching'E:\vivado':Launcher time out”的问题
  4. 温故而知新:HttpApplication,HttpModule,HttpContext及Asp.Net页生命周期
  5. python命令行工具_python命令行工具Click快速掌握
  6. 盘点最经典的外包案例
  7. 是否可以将 json 反序列化为 dynamic 对象?
  8. Docker最全教程之Python爬网实战(二十二)
  9. 微服务go还是java,Java微服务 vs Go微服务,究竟谁更强!?
  10. django-命名空间与反向解析-模板反向解析-视图反向解析
  11. 远程exp_Windows远程桌面服务漏洞(CVE-2019-0708)攻击代码现身
  12. 简单模拟QQ界面框架。
  13. leetcode题库6-- Z 字形变换
  14. 使用result配置结果视图
  15. 收藏一些web应用,留作DzzOffice日后添加web应用时使用。
  16. 计算机类核心期刊投稿的一些资料汇总
  17. 51单片机——舵机的原理及应用
  18. php开发微信小程序教程,从零开始开发微信小程序步骤(三)
  19. Windows 环境下 onenote中表格插入行和列的问题
  20. 计算机原理ms md,初学MD,请教大家一下计算的流程及相关问题 - 第 2 页 - 第一原理 - 小木虫 - 学术 科研 互动社区...

热门文章

  1. 如何通过阿里云APP进行域名备案?阿里云备案流程需要多久?
  2. {黑掉这个盒子} \\ FluxCapacitor Write-Up
  3. sql 大于 小于 大于等于 小于等于 符号
  4. ACM-Week 2
  5. 乐鑫ESP32-S3双核处理器,专为 AIoT 市场打造
  6. 论文翻译五:A New Method of Automatic Modulation Recognition Based on Dimension Reduction
  7. linux指令打开网址,linux 如何使用命令打开网址
  8. JS控制Video播放器(快进、后退、播放、暂停、音量大小)
  9. 【MDCC 2016】信息无障碍专题沙龙现场实录 | 附PPT下载
  10. 帆软Report设置参数列表