最近使用 max() 对高维的numpy 数组进行求最大值时遇到了一点问题,记录一下。
用法
对于 二维数组 ,能够指定轴向输出需要的最大值
指定 axis= 0
会返回 列 的最大值
指定 axis= 1
会返回 行 的最大值
代码实例:
import numpy as np
a= np.arange(10).reshape((2,5))
a_amx= np.max(a) # 直接返回数组的最大值
c_max= np.max(a, axis= 0) # 返回 列 的最大值
r_max= np.max(a, axis= 1) # 返回 行 的最大值
注意区别二维数组本身的轴向,二维数组本身的轴向如下图所示 :
(0 轴向代表行 ,1 轴向代表列)
对于 三维数组 ,可以理解为指定轴向的切面的最大值
三维数组本身的轴向 如下图所示:
但在使用 np.max() 指定轴向进行计算时,轴向会发生变化。如下图所示
(变化为 1 轴向代表二维数组的列,2 轴向代表二维数组的行)
代码实例:
import numpy as np
array = np.array([[[1,18],[3,4],[5,6],[7,8]],
[[17,10],[11,12],[13,14],[15,16]],
[[9,2],[19,20],[21,22],[23,24]]
])
print(np.max(array, axis=0)) # 返回 0 轴向的最大值
print(np.max(array, axis=1)) # 返回 1 轴向的最大值
print(np.max(array, axis=2)) # 返回 2 轴向的最大值
输出结果为:
[[17 18]
[19 20]
[21 22]
[23 24]]
[[ 7 18]
[17 16]
[23 24]]
[[18 4 6 8]
[17 12 14 16]
[ 9 20 22 24]]
当指定的 axis
的值为元组时,返回的是改元组构成的各个面(二维数组)的最大值
代码实例:
array = np.array([[[1,18],[3,4],[5,6],[7,8]],
[[17,10],[11,12],[13,14],[15,16]],
[[9,2],[19,20],[21,22],[23,24]]
])
print(np.max(array, (1, 2)))
print(np.max(array, (2,0)))
print(np.max(array, (0, 1)))
得到的结果为:
[18 17 24]
[18 20 22 24]
[23 24]