本文转载地址:原文链接:https://blog.csdn.net/u012219371/article/details/93697240
先说结论
numpy中的axis与shape有关,shape为一个tuple,这个tuple的index即为所在的axis。
例如一个ndarray形状为(4,3,2),则4对应的axis为0,3对应的axis为1,2对应的axis为2。
1 import numpy as np 2 x=np.arange(24).reshape(4,3,2) 3 print(x)
运行结果:
1 [[[ 0 1] 2 [ 2 3] 3 [ 4 5]] 4 5 [[ 6 7] 6 [ 8 9] 7 [10 11]] 8 9 [[12 13] 10 [14 15] 11 [16 17]] 12 13 [[18 19] 14 [20 21] 15 [22 23]]]
也即,最外层括号axis=0,每向内增加一层括号,axis加1。
1.求axis=0的最大值:哲学的理念(部分与整体的关系)理解为:
(定位到最外面的大括号,把整个数组看成一个数,这个数由四部分组成,求最大的一部分。)
1 print(x.max(axis=0)) //输出最大的一部分
运行结果:
1 [[18 19] 2 [20 21] 3 [22 23]]
分析:只看最外层括号,最外层括号内是由4个元素组成,每个元素是由一个3*2的矩阵(二维数组)组成。求axis=0的最大值即求这四个元素的最大值,因为元素为矩阵(3*2),最大值即矩阵element-wise(对应元素)的最大值。例如四个矩阵中第一个元素分别为0、6、12、18,所以最大值为18。以此类推:
2.求axis=1的最大值:(
哲学的理念(部分与整体的关系)理解为:去掉最外层的括号
定位到次外层的括号,此时整个数组有四个整体,求每个整体的最大一部分。
)
1 print(x.max(axis=1))//分别输出四个整体的最大部分
1 [[ 4 5] 2 [10 11] 3 [16 17] 4 [22 23]]
分析:现在只看axis=0中的每一个3*2矩阵(二维数组),每一个二维数组是由三个元素(一维数组)组成。求axis=1的最大值即求三个元素的最大值,因为元素为矩阵(1*2),最大值即矩阵element-wise(对应元素)的最大值。以第一个矩阵为例:
1 [[ 0 1],[ 2 3],[ 4 5]]
其它几个矩阵求法一样。
3.求axis=2的最大值:(
哲学的理念(部分与整体的关系)理解为:去掉最外层的括号
去掉次外层的括号,此时整个数组有12个整体,分别求出12个整体最大的一部分。
)
1 print(x.max(axis=2))
运行结果:
1 [[ 1 3 5] 2 [ 7 9 11] 3 [13 15 17] 4 [19 21 23]]
分析:现在只看axis=1中的每一个一维数组。每一个一维数组都是由scalar组成,最大值即为数组中最大的元素,例:
————————————————
版权声明:本文为CSDN博主「X+Y=Z」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u012219371/article/details/93697240