numpy中min和max函數axis詳細介紹


min和max函數分別取最小,最大數,下面以介紹min為主。

當axis=None時,返回ndarray數組中最小或最大的數;
舉例說明
# 不指定axis,表示從所有維度中找出最小的數據
arr1 = np.array([[1, 5, 3], [4, 2, 6]])
print(np.min(arr1)) # 1

當指定axis時,axis的范圍為ndarray的維度范圍,可以利用shape函數獲取ndrray的維度
舉例說明
arr1 = np.array([[1, 5, 3], [4, 2, 6]])
print(arr1.shape) # (2,3)
返回結果為(2,3),是一個二維數組,說明axis只能取0或1

下面分別介紹當ndarray為二維,三維,四維時axis的取值和最終結果

#二維
arr1 = np.array([[1, 5, 3], [4, 2, 6]])
#首先先判斷出數組的shape值
print(arr1.shape) # (2,3)

#當axis=0時,min的結果返回(3)
#當axis=1時,min的結果返回(2)
print(np.min(arr1, axis=0).shape,end="axis=0\n\n")
# (3)
print(np.min(arr1, axis=1),end="axis=1\n\n")
# (2)

#三維
arr1 = np.array([[[1, 2, 3], [4, 5, 6]], [[2, 3, 4], [3, 65, 1]], [[1, 33, 2], [44, 55, 66]],[[21, 12, 17], [3, 11, 43]]])
print(arr1.shape) #(4,2,3)
print(np.min(arr1, axis=0).shape, end="axis=0\n\n") # (2,3)

print(np.min(arr1, axis=1).shape, end="axis=1\n\n") # (4,3)

print(np.min(arr1, axis=2).shape, end="axis=2\n\n") # (4,2)


總結:當axis=k時,維度為n的(n1,n2,n3,...nn-1,nn)數組,min后的結果維度為(n1,n2,n3,...nk-1,nk+1,...,nn-1,nn)

各維度的值如何比對,取值

#三維
arr1 = np.array([[[1, 2, 3], [4, 5, 6]], [[2, 3, 4], [3, 65, 1]], [[1, 33, 2], [44, 55, 66]],[[21, 12, 17], [3, 11, 43]]])
print(arr1)

[[[ 1 2 3]
[ 4 5 6]]

[[ 2 3 4]
[ 3 65 1]]

[[ 1 33 2]
[44 55 66]]

[[21 12 17]
[ 3 11 43]]]

print(np.min(arr1, axis=0), end="axis=0\n\n") 
先根據上面的推算,寫出維度格式
[[x1 x2 x3]
[x4 x5 x6]]
再比對取值:

[x1,x2,x3]從[1 2 3],[2 3 4],[1 33 2],[21 12 17]中取各項中最小值
x1=1,x2=2,x3=2
[x4 x5 x6]從[4 5 6],[3 65 1],[44 55 66],[3 11 43]中取各項中最小值
x4=3,x5=5,x6=1
最后結果為

[[1 2 2]

[3 5 1]]

print(np.min(arr1, axis=1), end="axis=1\n\n") 

寫出維度格式

[[x1 x2 x3]

[x4 x5 x6]

[x7 x8 x9]

[x10 x11 x12]]

再比對取值:

[x1,x2,x3]從[1 2 3],[4 5 6]中取各項中最小值

 

x1=1,x2=2,x3=3

[x4,x5,x6]從[2 3 4],[3 65 1]中取各項中最小值

x4=2,x5=3,x6=1

[x7,x8,x9]從[1 33 2],[44 55 66]中取各項中最小值

x7=1,x8=33,x9=2

[x10,x11,x12]從[21 12 17],[3 11 43]中取各項中最小值

x10=3,x11=11,x9=17

最后結果為

[[ 1 2 3]
[ 2 3 1]
[ 1 33 2]
[ 3 11 17]]

print(np.min(arr1, axis=2), end="axis=2\n\n") 

寫出維度格式

[[x1 x2]

[x3 x4]

[x5 x6]

[x7 x8]]

再比對取值:

[x1,x2]從[1 2 3],[4 5 6]中取各項中最小值

x1=1,x2=4

[x3,x4]從[2 3 4],[3 65 1]中取各項中最小值

x3=2,x4=1

[x5,x6]從[1 33 2],[44 55 66]中取各項中最小值

x5=1,x5=44

[x7,x8]從[21 12 17],[3 11 43]中取各項中最小值

x7=12,x8=3

最后結果為

[[ 1 4]
[ 2 1]
[ 1 44]
[12 3]]

 

以上就介紹完了,下面再以max函數介紹一個四維數組

# 四維
arr1 = np.array([[[[1, 2, 3], [4, 5, 6]], [[2, 3, 4], [3, 65, 1]], [[1, 33, 2], [44, 55, 66]],[[21, 12, 17], [3, 11, 43]]],[[[1, 2, 3], [4, 5, 6]], [[3, 1, 2], [3, 5, 1]], [[1, 3, 2], [4, 5, 7]],[[3, 5, 6], [7, 2, 8]]]])
print(arr1.shape) #(2,4,2,3)
print(arr1)
print(np.max(arr1, axis=0), end="axis=0\n\n") # (4,2,3)

[[[x1 x2 x3]
[x4 x5 x6]]

[[x7 x8 x9]
[x10 x11 x12]]

[[x13 x14 x15]
[x16 x17 x18]]

[[x19 x20 x21]
[x22 x23 x24]]]

再比對取值:

[[x1 x2 x3]
[x4 x5 x6]]

[[ 1 2 3]
[ 4 5 6]]

[[ 1 2 3]
[ 4 5 6]]

中取最大值,因為例子中兩組值都是一樣的,所以結果就為

[[ 1 2 3]
[ 4 5 6]]

再比對取值:

[[x7 x8 x9]
[x10 x11 x12]]

[[ 2 3 4]
[ 3 65 1]]

[[ 3 1 2]
[ 3 5 1]]

中取最大值,結果為

[[3 3 4]

[3 65 1]]

再比對取值:

[[x13 x14 x15]
[x16 x17 x18]]

[[ 1 33 2]
[44 55 66]]

[[ 1 3 2]
[ 4 5 7]]

中取最大值,結果為

[[1 33 2]

[44 55 66]]

再比對取值:

[[x19 x20 x21]
[x22 x23 x24]]

[[21 12 17]
[ 3 11 43]]

[[ 3 5 6]
[ 7 2 8]]

中取最大值,結果為

[[21 12 17]

[7 11 43]]

最終結果為

[[[ 1 2 3]
[ 4 5 6]]

[[ 3 3 4]
[ 3 65 1]]

[[ 1 33 2]
[44 55 66]]

[[21 12 17]
[ 7 11 43]]]

 

下面剩下三組值,請讀者自己算出結果。

print(np.max(arr1, axis=1), end="axis=1\n\n") # (4,2,3)

 

print(np.max(arr1, axis=2), end="axis=2\n\n") # (2,4,3)

 

print(np.max(arr1, axis=3), end="axis=2\n\n") # (2,4,2)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM