numpy中axis的通俗理解

本文转载地址:原文链接: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

穷则独善其身,达则兼济天下……
原文地址:https://www.cnblogs.com/hmy-666/p/12468532.html