(Python)对numpy中的argmax用法的理解

作用

argmax()返回的就是最大数的索引
argmax()有一个参数axis,可以指定函数返回不同维的最大值。

一维

import numpy as np


a = np.array([1, 2, 3, 4, 5])
print(np.argmax(a, axis=0))

结果是4。而在python中一维向量只有一个方向,所以一维情况下axis只能等于0,函数只会返回一个值。
如果对它进行转置,它就会变成一个二维矩阵:

a = np.array([1, 3, 5, 7])
print(a)
print(a.shape)
b = a.reshape((4, 1))
print(b)
print(b.shape)
#结果
[1 3 5 7]
(4,)
[[1]
 [3]
 [5]
 [7]]
(4, 1)
axis的值大于0

比如说

a = np.array([1, 2, 3, 4, 5])
print(np.argmax(a, axis=1))

会报错numpy.AxisError: axis 1 is out of bounds for array of dimension 1

二维

axis=0
a = np.array([[1, 3, 5, 7],
              [5, 7, 2, 2],
              [4, 6, 8, 1]])
print(np.argmax(a, axis=0))

返回结果

[1 1 2 0]

输入的是一个3x4的矩阵。如果把输入矩阵的数用a[i][j]来表示的话,axis=0时返回的索引就是a[i][j]在j分别等于0,1,2,3,i取不同值时最大数所在位置对应i的值。因为j可以取4个值,所以得到的是一个1x4的结果。
就是a[0][0] a[1][0] a[2][0]比较,a[0][1] a[1][1] a[2][1]比较,a[0][2] a[1][2] a[2][2]比较,a[0][3] a[1][3] a[2][3]比较。
此时可以看成是按列找最大值。

axis=1

返回结果

[3 1 2]

同样如果把输入矩阵的数用a[i][j]来表示的话,axis=1时返回的索引就是a[i][j]在i分别等于0,1,2,j取不同值时最大数所在位置对应j的值。因为i可以取3个值,所以得到的是一个1x3的结果。
可以看成是按行找最大值。

三维

axis=0
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))

返回结果

[[0 0 0 0]
 [0 1 0 0]
 [1 0 1 0]]

输入的是一个2x3x4的矩阵。如果我们把输入矩阵的数用a[i][j][k]来表示的话,axis=0时返回的索引就是a[i][j][k]在j等于0,1,2;k等于0,1,2,3,i取不同值时最大数对应的i的值。
相当于最大值相对于第一维所在的位置,就是黄框以及蓝框中最大数在两个红框中的位置。
在这里插入图片描述

因为j*k=3x4,所以返回的是一个3x4的矩阵。

axis=1
[[1 2 0 1]
 [1 2 2 1]]

i*k=2x4,返回2x4的矩阵。返回的索引就是a[i][j][k]在i=0,1;k=0,1,2,3,j取不同值时的最大数对应的j的值。相当于最大值相对于第二维所在的位置。
在这里插入图片描述

axis=2
[[1 0 1]
 [1 0 2]]

i*j=2x3,返回2x3的矩阵。返回的索引就是a[i][j][k]在i=0,1;j=0,1,2,k取不同值时的最大数 对应的k的值。相当于最大值相对于第三维所在的位置。
在这里插入图片描述

更高维也是差不多的道理。

参考文献:https://www.cnblogs.com/touch-skyer/p/8509217.html
https://blog.csdn.net/qq_37148940/article/details/109672790

  • 6
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值