arr_np.max()函数用于求np数组的最大值,如果不指定维度,返回值是np数组的所有数字的最大值。
一维数组
先来看比较简单的情况,建立一个一维np数组arr_1d,求arr_1d的最大值。
import numpy as np
arr_1d=np.array([1,2,3])
print(arr_1d.max())#3
二维数组
二维数组可以求所有数字中的最大值,也可以指定axis求指定方向的最大值。
import numpy as np
arr_2d=np.array([[1,2,3],[4,5,6]])
max=arr_2d.max()
max1=arr_2d.max(axis=0)
max2=arr_2d.max(axis=1)
print(max,max1,max2)#6 [4 5 6] [3 6]
可以看出,不加任何参数的max()是求所有数字中的最大值。
对于axis=0的情况,我们首先确定最后结果的形状,arr_2d的形状是(2,3),对第0维求最大值,最后结果的形状就是(3,),可以理解为在原形状的基础上去掉axis指定的维度后的形状,就是最后结果的形状。然后我们看求结果的过程,axis=0其实就是沿着行去求,思考一下第一行在哪,第二行在哪,连起来的方向就是你要沿着这条线求最大值的方向,如下图所示。
对于axis=1的情况,同样确定最后结果的形状,应用上面的理论,最后结果的形状是(2,)。然后看求结果的过程,axis=1是沿着列求,我们找到第一列,第二列,连起来的方向就是要沿着这条线求最大值的方向,如下图所示。
三维数组
三维数组同样可以使用上面的理论
import numpy as np
arr_3d=np.array([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]])
max=arr_3d.max()
max1=arr_3d.max(axis=0)
max2=arr_3d.max(axis=1)
max3=arr_3d.max(axis=2)
print(max) #12
print(max1)# [[ 7 8 9],[10 11 12]](2,3)
print(max2)# [[ 4 5 6],[10 11 12]](2,3)
print(max3)# [[ 3 6],[ 9 12]](2,2)
第一步确定最后结果的形状,原形状是(2,2,3),可以自己求一下对应的三个维度最大值的结果矩阵的形状。然后找对应维度方向的第一组数据,第二组数据,连起来就是要求最大值的方向。这里画出axis等于0的求最大值的方向,如下图所示。axis=1和axis=2和二维数组axis=0和axis=1的情况很像,可以自己想一下。