关于 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
由上述基础知识可知,这里axis可以取到0,1,2
-
axis = 0,按照计算方法: 所以sum(axis=0)的值是 [ [2, 2, 5, 2], [3, 3, 5, 1], [4, 4, 5, 2]]。
验证一下, 正确!
-
axis = 1,按照计算方法: 所以sum(axis=1)的值是 [ [4, 7, 10, 4], [5, 2, 5, 1]]. 验证一下,正确。
-
axis = 2,按照计算方法: 所以sum(axis=2)的值是 [ [8, 7, 10], [3, 5, 5]]. 验证一下,正确。
最后
分享就到这里了,如果有不严谨的地方麻烦告知,我会认真修改。
This article is generated based on markdown.