1. 程式人生 > 其它 >numpy中argmax、argmin的用法

numpy中argmax、argmin的用法

技術標籤:pythonnumpypythonnumpyargmaxargmin

numpy中argmax、argmin的用法

1.argmax,argmin的作用

argmax: 返回每行或每列的最大值所在下標索引
argmin: 返回每行或每列的最下值所在下標索引
引數 axis=0 表示垂直方向,axis=1表示水平方向。(由於個人的思維定勢,老認為1是垂直方向,所以遇到numpy的axis方向不管三七二十一,認為是反的,先把axis=1當作水平方向,再看axis=0)

import numpy as np

a=np.array([[1,2,3,4,5],
          [11
,12,13,14,15], [21,22,23,24,25], [31,32,33,34,35], [41,42,43,44,45], [51,52,53,54,55], ]) print(a.argmax(axis=0)) #垂直方向求最大 print(a.argmax(axis=1)) #水平方向求最大 print() print(a.argmin(axis=0)) #垂直方向求最小 print(a.argmin(axis=1)) #水平方向求最小 #結果: [5 5 5 5 5]
#垂直方向求各行的最大值所在索引 [4 4 4 4 4 4] #水平方向求各行的最大值所在索引 [0 0 0 0 0] [0 0 0 0 0 0]

2. 返回值

也是一個數組,對應所求行或者列最值的索引結果

3.多維計算結果

計算的結果也會對比計算到每個數字上,返回的結果是以最內層維度形狀為最小單位的對比結果,且會對比最小單位的每一位元素,最後返回:
最小單元形狀的每個最值索引

b=np.array([[[1,2],[5,6],[3,8]],
          [[3,2],[3,4],[5,6]],
          [[1,2],[3,4],[5,6]],
          [[1,2],
[3,4],[5,6]], [[1,9],[3,4],[5,6]], [[1,2],[3,4],[5,6]], ]) print(b.argmax(axis=0)) print(type(b.argmax(axis=0))) print(b.argmax(axis=1)) print() print(b.argmin(axis=0)) print(b.argmin(axis=1)) #結果: [[1 4] #垂直第一列,最小單元為一個2元素列表,對比每個元素大小,看出第一個最大是[3,2],第二個元素最大是[1,9],返回他們的索引組成的2元列表 [0 0] [1 0]] <class 'numpy.ndarray'> [[1 2] #水平第一行,最小單元為一個2元素列表,第一個元素最大的是[5,6],第二個元素最大的是[3,8],返回他們的對應索引組成的2元列表 [2 2] [2 2] [2 2] [2 0] [2 2]] [[0 0] [1 1] [0 1]] [[0 0] [0 0] [0 0] [0 0] [0 1] [0 0]]

總結:

1.argmax和argmin求得都是索引值
2.結果返回的形狀是最內層維度的形狀,返回的值是最內層維度的個元素一一對比後的最值索引。