仍是從一維數組出發.看下面的例子.web
import numpy as np a = np.array([3, 1, 2, 4, 6, 1]) print(np.argmax(a))
4
argmax返回的是最大數的索引.argmax有一個參數axis,默認是0,表示第幾維的最大值.看二維的狀況.swift
import numpy as np
a = np.array([[1, 5, 5, 2], [9, 6, 2, 8], [3, 7, 9, 1]]) print(np.argmax(a, axis=0))
[1,2,2,1]
爲了描述方便,a就表示這個二維數組.np.argmax(a, axis=0)的含義是
a[0][j],
a[1][j],
a[2][j]
(j=0,1,2,3)中最大值的索引.(每1列的最大索引)
從a[0][j]開始,最大值索引最初爲(0,0,0,0),拿a[0][j]和a[1][j]做比較,9大於1,6大於5,8大於2,因此最大值索引由(0,0,0,0)更新爲(1,1,0,1),再和a[1][j]做比較,7大於6,9大於5因此更新爲(1,2,2,1).再分析下面的輸出.數組
import numpy as np
a = np.array([[1, 5, 5, 2], [9, 6, 2, 8], [3, 7, 9, 1]]) print(np.argmax(a, axis=1))
[1,0,2]
np.argmax(a, axis=1)的含義是
a[i][0],a[i][1],a[i][2],a[i][3]
(i=0,1,2)中最大值的索引.(每1行的最大索引)
從a[i][0]開始,a[i][0]對應的索引爲(0,0,0),先假定它就是最大值索引(思路和上節簡單例子徹底一致)拿a[i][0]和a[i][1]做比較,5大於1,7大於3因此最大值索引由(0,0,0)更新爲(1,0,1),再和a[i][2]做比較,9大於7,更新爲(1,0,2),再和a[i][3]做比較,不用更新,最終值爲(1,0,2)
再看三維的狀況.ui
import numpy as np
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]]
np.argmax(a, axis=0)的含義是a[0][j][k],a[1][j][k] (j=0,1,2,k=0,1,2,3)中最大值的索引.
從a[0][j][k]開始,a[0][j][k]對應的索引爲((0,0,0,0),(0,0,0,0),(0,0,0,0)),拿a[0][j][k]和a[1][j][k]對應項做比較6大於-6,3大於-3,9大於-9,因此更新這幾個位置的索引,將((0,0,0,0),(0,0,0,0),(0,0,0,0))更新爲((0,0,0,0),(0,1,0,0),(1,0,1,0)). 再看axis=1的狀況.lua
import numpy as np
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=1))
[[1 2 0 1]
[1 2 2 1]]
np.argmax(a, axis=1)的含義是a[i][0][k],a[i][1][k],a[i][2][k] (i=0,1,k=0,1,2,3)中最大值的索引.(每1列的最大索引)
從a[i][0][k]開始,a[i][0][k]對應的索引爲((0,0,0,0),(0,0,0,0)),拿a[i][0][k]和a[i][1][k]對應項做比較,9大於1,8大於2,9大於-1,6大於5,2大於-5,8大於2,因此更新這幾個位置的索引,將((0,0,0,0),(0,0,0,0))更新爲((1,0,0,1),(1,1,1,1)),如今最大值對應的數組爲((9,5,5,8),(9,6,2,8)).
再拿((9,5,5,8),(9,6,2,8))和a[i][2][k]對應項從比較,7大於5,7大於6,9大於2.更新這幾個位置的索引.將((1,0,0,1),(1,1,1,1))更新爲((1,2,0,1),(1,2,2,1)).axis=2的狀況也是相似的.spa