作用
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.toymoban.com/news/detail-424037.html
参考文献:https://www.cnblogs.com/touch-skyer/p/8509217.html
https://blog.csdn.net/qq_37148940/article/details/109672790文章来源地址https://www.toymoban.com/news/detail-424037.html
到了这里,关于(Python)对numpy中的argmax用法的理解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!