clint_chan, tutorial,

2020-5-13-关于axis的深度理解

Clint_chan Clint_chan Follow May 13, 2020 · 1 min read
2020-5-13-关于axis的深度理解
Share this

关于 numpy 的 axis 是一个很重要的点,所以希望能对你们有帮助。

  • NumPy(Numerical Python)是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩阵(matrix)),支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库
  • axis全称Apache Extensible Interaction System 即阿帕奇可扩展交互系统。Axis本质上就是一个SOAP引擎,提供创建服务器端、客户端和网关SOAP操作的基本框架。Axis目前版本是为Java编写的,不过为C++的版本正在开发中。但Axis并不完全是一个SOAP引擎,它还是一个独立的SOAP服务器和一个嵌入Servlet引擎(例如Tomcat)的服务器。

基础知识

对于一个二维数组,精确定位到某个元素可以用a[n0][n1]表示。n0的取值是0,1,2,3,代表第一个索引;n1的取值是0,1,2,3,代表第二个索引; axis的取值取决于数组的维度 比如它是一个三维数组,那么它有三种情况 : 0,1,2 可以从数学的角度理解就是三维空间有三个轴:x,y,z轴

如果axis=0,就是把行当作轴,行就已经确定下来了(固定取0依次到最大行的索引,比如数组有4行就取到a[3][n1])==

如果axis=1,就是把列当作轴,列就已经确定下来了(固定取0依次到最大行的索引,比如数组有4行就取到a[n0][3])。

实例

a = np.eye(4) 
a[0][2] = 5
a=
array:[[1. 0. 5. 0.]
 		[0. 1. 0. 0.]
 		[0. 0. 1. 0.]
	 	[0. 0. 0. 1.]]
axis=0;以第一列为例:
<<<   print(np.mean(a,axis=0))
<<<   [0.25 0.25 1.5  0.25]

验证: (a[0][0]+a[1][0]+a[2][0]+a[3][0])/4 =0.25 , 正确

axis=1;以第一行为例:
<<<   print(np.mean(a,axis=1))
<<<   [1.5  0.25 0.25 0.25]

验证: (a[0[0]+a[0][1]+a[0][2]+a[0][3]])/4 = 1.5 , 正确

延伸

假设我生成一个numpy数组 a
生成数组a

由上述基础知识可知,这里axis可以取到0,1,2

  • axis = 0,按照计算方法: axis = 0 所以sum(axis=0)的值是 [ [2, 2, 5, 2], [3, 3, 5, 1], [4, 4, 5, 2]]。

    验证一下, 正确!

  • axis = 1,按照计算方法: axis = 1 所以sum(axis=1)的值是 [ [4, 7, 10, 4], [5, 2, 5, 1]]. 验证一下,正确。

  • axis = 2,按照计算方法: axis = 2 所以sum(axis=2)的值是 [ [8, 7, 10], [3, 5, 5]]. 验证一下,正确。

最后

分享就到这里了,如果有不严谨的地方麻烦告知,我会认真修改。

This article is generated based on markdown.

Join Newsletter
Get the latest news right in your inbox. We never spam!
Clint_chan
Written by Clint_chan
Hi, I am Clint_chan, the author of this blog, the theme you're currently previewing. I hope you like it!