numpy.argmin() 和 numpy.argmax()

官方文档:https://docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.argmin.html

1 numpy.argmin

该函数的目的就是给出axis方向最小值的下标。多个最小值,只取第一个的下标。

numpy.argmin(a, axis=None, out=None)
Parameters:

a : Input array 输入数组

axis :可选。 默认将输入数组展平。否则,按照axis方向

out : 可选。如果设置了某个数组b,则结果会输出到b中

Returns:index_array : 输出最小值下标组成的数组。shape与输入数组a去掉axis的维度相同。

通俗的理解:

  • axis的不同值表示不同维度。在二维中,axis=0表示列,a'xi's=1表示行。广泛的来说,我们不管一个矩阵是几维的,比如一个矩阵维度如下:(d0,d1,...,dn−1) ,那么dim=0就表示对应到d0也就是第一个维度,dim=1表示对应到也就是第二个维度,一次类推。
  • argmax就是得到最大值的序号索引,对于一个维度为(d0,d1) 的二维矩阵来说,我们想要求每一行中最大数的在该行中的列号,最后我们得到的就是一个维度为(d0,1) 的一矩阵。这时候,列就要消失了。因此,我们想要求每一行最大的列标号,我们就要指定axis=1,表示我们不要列了,保留行的size就可以了。假如我们想求每一列的最大行标,就可以指定axis=0,表示我们不要行了。
  • 在三维矩阵中,如矩阵shape=(2,3,4),这是由两个(3,4)的二维矩阵组成的。若axis=0,则2消失不要,生成一个(3,4)的二维矩阵。若axis=1,则3消失不要,生成一个(2,4)的二维矩阵。若axis=2,则4消失不要,生成一个(2,3)的二维矩阵。更高维度的,以此类推。

栗子:

二维:

import numpy as np

a=np.array([[1, 5, 5, 2],
            [9, -6, 2, 8],
            [-3, 7, -9, 1]])

b=np.argmax(a, axis=0)

print(b)
print(a.shape)

# result

/Users/i-mamba/opt/anaconda3/envs/DeepLearning/bin/python3.7 /Users/i-mamba/修仙之路/代码篇/手提包检测分割/codes/question.py
[1 2 0 1]
(3, 4)

Process finished with exit code 0

dim=0维度上为3,即在那3组数据中作比较,求得是每一列中的最大行标,因此为[1,2,0,4]

三维:

import numpy as np

a = 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]]
    ])

b1 = np.argmin(a, axis=0)
print(b1)
print(a.shape)

# result
b1:[[1 0 1 0]
    [0 0 0 0]
    [0 0 0 0]]
shape: (2, 3, 4)
# dim=0,即将第一个维度消除,也就是将两个[3*4]矩阵只保留一个,因此要在两组中作比较,即将上下两个[3*4]的矩阵分别在对应的位置上比较

b2 = np.argmin(a, axis=1)
print(b2)
print(b2.shape)

# result
b2:[[2 1 2 2]
    [0 1 0 2]]
shape: (2, 4)
# dim=1,即将第二个维度消除,这么理解:矩阵维度变为[2*4];

b3 = np.argmin(a, axis=2)
print(b3)
print(b3.shape)

# result
b3:[[0 1 2]
    [2 2 3]]
shape: (2, 3)
# dim=2,即将第三个维度消除,这么理解:矩阵维度变为[2*3]

2 numpy.argmax

numpy.argmax(a, axis=None, out=None)

与agmin类似。

参考:https://blog.csdn.net/weixin_42494287/article/details/92797061

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值