千家信息网

numpy中argmax怎么用

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章将为大家详细讲解有关numpy中argmax怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、基本介绍numpy中的argmax简而言之就是返回最大值
千家信息网最后更新 2026年11月03日numpy中argmax怎么用

这篇文章将为大家详细讲解有关numpy中argmax怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

    一、基本介绍

    numpy中的argmax简而言之就是返回最大值的索引,当使用np.argmax(axis),这里方向axis的指定往往让人不理解。
    简而言之:这里axis可以让我们从行、列、或者是深度方向来看一个高维数组。

    二、代码实验

    1、一维数组情况

    简单一维情况,np.argmax()直接返回最大值的索引,不指定axis可以认为是将数组拉平之后寻找最大值的索引

    1.1、axis=0

    当我们指定axis=0时,其实是在列中作比较,寻找最大的行的索引

    当然对于这个一维情况没有什么影响。

    1.2、axis=1

    当我们指定axis=1的时候报错了,这是因为我们的a是一维数组,没有axis=1这个轴,可见当我们使用np.argmax()时axis的指定不能超过所需要排序的数组

    2、二维数组情况

    不指定axis就是相当于把二维数组拉平,直接选取最大值的索引

    2.1、axis=0

    指定axis=0就是比较列,返回行索引中的最大值

    我们改写一个b中的元素,我们期望的结果是[2,2,1,2]

    实际结果和我们期望相符合

    2.2、axis=1

    指定axis=0就是比较行,返回列索引中的最大值

    3、三维数组情况

    一个三维数组可以视作一张图片,它的三个维度分别为(high, width, channels) 分别表示图像的高、宽、通道数(深度)。常见的彩色图像都有三个通道,我们以常见的RGB图像为例构建一个数组。

    直接使用np.argmax(),就是之间将三维数组拉平,寻找最大值的索引

    3.1、axis=0

    单独查看c的三个通道的数据,如图所示

    对于三个通道取axis=0意味分别比较列返回行的最大值索引

    我们期望的返回值应该是[[1,1,1,],[1,1,1],[1,1,1]],实际的结果和我们的期望一致

    3.2、axis=1

    对于三个通道取axis=1意味分别比较行返回列的最大值索引

    我们期望的结果是[[2, 2, 2],[2, 2, 2],[2, 2, 2],[2, 2, 2]],,实际的结果和我们的期望一致

    3.3、axis=2

    取axis=2意味着我们从图像的深度方向(通道方向)来进行比较,可以认为三个数组的叠在一起的,分别对应channel0,channel1,channel2而我们取最大值的索引就是返回对应pixel像素所在的通道索引。

    c的channel2所有的像素值均大于其他两个channel所有返回值应该是[[2,2,2,],[2,2,2,],[2,2,2,],[2,2,2,]],实际结果和我的期望一致

    3.4、axis=-1

    axis=-1即是反过来看轴,对于三维情况axis=-1和axis=2一致

    其他:
    对于二维情况axis=-1和anxis=1一致
    对于一维情况axis=0和anxis=-1一致

    四、Reference

    https://blog.csdn.net/weixin_39190382/article/details/105854567

    https://www.cnblogs.com/zhouyang209117/p/6512302.html

    PS:补充

    1.对一个一维向量

    import numpy as npa = np.array([3, 1, 2, 4, 6, 1])b=np.argmax(a)#取出a中元素最大值所对应的索引,此时最大值位6,其对应的位置索引值为4,(索引值默认从0开始)print(b)#4

    2.对2维向量(通常意义下的矩阵)a[][]

    import numpy as npa = np.array([[1, 5, 5, 2],              [9, 6, 2, 8],              [3, 7, 9, 1]])b=np.argmax(a, axis=0)#对二维矩阵来讲a[0][1]会有两个索引方向,第一个方向为a[0],默认按列方向搜索最大值#a的第一列为1,9,3,最大值为9,所在位置为1,#a的第一列为5,6,7,最大值为7,所在位置为2,#此此类推,因为a有4列,所以得到的b为1行4列,print(b)#[1 2 2 1] c=np.argmax(a, axis=1)#现在按照a[0][1]中的a[1]方向,即行方向搜索最大值,#a的第一行为1,5,5,2,最大值为5(虽然有2个5,但取第一个5所在的位置),索引值为1,#a的第2行为9,6,2,8,最大值为9,索引值为0,#因为a有3行,所以得到的c有3个值,即为1行3列print(c)#[1 0 2]

    3.对于三维矩阵a[0][1][2],情况最为复制,但在lstm中应用最广

    import numpy as npa = np.array([              [                  [1, 5, 5, 2],                  [9, -6, 2, 8],                  [-3, 7, -9, 1]              ],               [                  [-1, 7, -5, 2],                  [9, 6, 2, 8],                  [3, 7, 9, 1]              ],            [                  [21, 6, -5, 2],                  [9, 36, 2, 8],                  [3, 7, 79, 1]              ]            ])b=np.argmax(a, axis=0)#对于三维度矩阵,a有三个方向a[0][1][2]#当axis=0时,是在a[0]方向上找最大值,即两个矩阵做比较,具体#(1)比较3个矩阵的第一行,即拿[1, 5, 5, 2],#                         [-1, 7, -5, 2],#                         [21, 6, -5, 2],#再比较每一列的最大值在那个矩阵中,可以看出第一列1,-2,21最大值为21,在第三个矩阵中,索引值为2#第2列5,7,6最大值为7,在第2个矩阵中,索引值为1.....,最终得出比较结果[2 1 0 0]#再拿出三个矩阵的第二行,按照上述方法,得出比较结果 [0 2 0 0]#一共有三个,所以最终得到的结果b就为3行4列矩阵print(b)#[[0 0 0 0] #[0 1 0 0] #[1 0 1 0]] c=np.argmax(a, axis=1)#对于三维度矩阵,a有三个方向a[0][1][2]#当axis=1时,是在a[1]方向上找最大值,即在列方向比较,此时就是指在每个矩阵内部的列方向上进行比较#(1)看第一个矩阵                  # [1, 5, 5, 2],                  # [9, -6, 2, 8],                  # [-3, 7, -9, 1]#比较每一列的最大值,可以看出第一列1,9,-3最大值为9,,索引值为1#第2列5,-6,7最大值为7,,索引值为2# 因此对第一个矩阵,找出索引结果为[1,2,0,1]#再拿出2个,按照上述方法,得出比较结果 [1 0 2 1]#一共有三个,所以最终得到的结果b就为3行4列矩阵print(c)#[[1 2 0 1] # [1 0 2 1] # [0 1 2 1]] d=np.argmax(a, axis=2)#对于三维度矩阵,a有三个方向a[0][1][2]#当axis=2时,是在a[2]方向上找最大值,即在行方向比较,此时就是指在每个矩阵内部的行方向上进行比较#(1)看第一个矩阵                  # [1, 5, 5, 2],                  # [9, -6, 2, 8],                  # [-3, 7, -9, 1]#寻找第一行的最大值,可以看出第一行[1, 5, 5, 2]最大值为5,,索引值为1#第2行[9, -6, 2, 8],最大值为9,,索引值为0# 因此对第一个矩阵,找出行最大索引结果为[1,0,1]#再拿出2个矩阵,按照上述方法,得出比较结果 [1 0 2 1]#一共有三个,所以最终得到的结果d就为3行3列矩阵print(d)# [[1 0 1]#  [1 0 2]#  [0 1 2]]####################################################################最后一种情况,指定矩阵a[0, -1, :],第一个数字0代表取出第一个矩阵(从前面可以看出a有3个矩阵)为# [1, 5, 5, 2],# [9, -6, 2, 8],# [-3, 7, -9, 1]#第二个数字"-1"代表拿出倒数第一行,为# [-3, 7, -9, 1]#这一行的最大索引值为1 # ,-1,代表最后一行m=np.argmax(a[0, -1, :])print(m)#1 #h,取a的第2个矩阵# [-1, 7, -5, 2],# [9, 6, 2, 8],# [3, 7, 9, 1]#的第3行# [3, 7, 9, 1]#的最大值为9,索引为2h=np.argmax(a[1, 2, :])print(h)#2 g=np.argmax(a[1,:, 2])#g,取出矩阵a,第2个矩阵的第3列为-5,2,9,最大值为9,索引为2print(g)#2

    关于"numpy中argmax怎么用"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

    最大 最大值 矩阵 索引 方向 结果 三个 数组 情况 就是 三维 一行 通道 期望 一致 一维 位置 图像 实际 所在 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 新华互联网科技 互联网是第几次科技革命的成果 互联网科技财经 互联网核心科技是什么 麻工互联网科技 互联网 科技公司 互联网科技的发展 艾特科技互联网 易通互联网络科技有限公司 四川狮子座互联网科技 互联网科技股午盘股票涨跌 深圳前海聚择互联网科技有限公司 宁夏众和广鑫互联网科技有限公司 成都互联网科技公司工作好不好 互联网科技大奖都有哪些公司 健康食品互联网创新科技园项目 深圳市罗太互联网科技有限公司 福州德业互联网科技 马化腾互联网科技教学 安徽九吞吴互联网科技有限公司 河南云网互联网络科技有限公司 深圳互联网络科技有限公司 朗涯互联网科技 上海致骋互联网科技 友谊互联网络科技 恒生科技互联网指数分析 科技与互联网的利与弊 成都互联网科技公司100强 华夏恒生科技与互联网科技 深圳市罗太互联网科技有限公司
    0