numpy关于坐标轴axis的理解
April 6, 2024
Python, Numpy, 坐标轴, Axis

numpy关于坐标轴axis的理解

April 6, 2024
Python, Numpy, 坐标轴, Axis

在numpy中用于计算的ndarray类是专门用于处理多维数组和矩阵的数据结构。其内部实现机制是针对不同类型的数据,使用存储在连续的内存中的一维数组进行处理。因此一维数组是基础处理单元。 一维数组的不同层叠方式和层叠过程形成多维数组,axis就是表达数组层叠的层级数的概念。 我们可以这样理解,三维数组的构成过程是一维数组构成的线,二维数组由一维数组在行上堆叠成面,三维数组是二维数组的面一层层堆叠成体。axis从0到2,表达的是堆叠层数,0表示最后一次的堆叠层数,即从二维数组堆叠成三维数组的堆叠层数,2表示三维数组的组成基本单位——一维数组元素在列方向上的堆叠数。 具体理解过程:

一、一维数组 #

一维数组只有一行,N列的数据集合,因此它的维度坐标轴axis只有列方向的元素堆叠,即axis0。我们把它当成一条线。​ image

二、二维数组 #

二维数组是以一维数组作为基本单位,在行上的层级堆叠。相当于一维数组形成的线在行方向上堆叠成面,我们把它当做一个面。因此,二维数组的axis0表达的是一维数组在行方向上的堆叠层级数,axis1即一维数组本身axis。如下图这个二维数组是三个一维数组的堆叠,其中axis0是三个一维数组的堆叠,一维数组本身是两个元素的列方向上的堆叠,因此这个二维数组的shape是(3,2)。 image

三、三维数组 #

三维数组的构成过程是以一维数组形成的线,在行上层级堆叠形成面,也就是二维数组,最后把面堆叠起来形成体,即三维数组。因此,三维数组的axis0表达的是二维数组的在堆叠层级数,axis1表达的是构成二维数组的一维数组在行方向上的堆叠数,最后axis2表达的是最基本的构成单位——一维数组的列方向上元素的堆叠。 如下图这个三维数组,最后堆叠操作是将二维数组的堆叠成三维数组,因此axis0堆叠了两层,axis1表示的是将一维数组堆叠成二维数组,是由三个一维数组堆叠而成,而一维数组本身是由两个元素的列向堆叠,因此这个三维数组的shape是(2,3,2). image

四、指定坐标轴axis的计算 #

指定维度坐标的计算,表示沿着指定坐标进行压缩,把指定坐标轴压缩成一维。 以上图的三维数组为例,比如指定axis=0求和:b.sum(axis=0),表示把三维数组体压缩成二维面,在axis=0方向上的对应位置的元素用求和合并计算,求和结果是把axis=0方向上的层数从2压缩到1。

import numpy as np
b=np.array([[[0,1],
			 [2,3],
			 [4,5]],

			[[0,1],
			 [2,3],
			 [4,5]]])

b.sum(axis=0)
#输出结果:
array([[0,2],
	   [4,6],
	   [8,10]])
b.sum(axis=0).shape
#输出结果:
(3,2)

© 2024 Powered By Hugo,模板:Hugo-book . Contact: tndyx@hotmail.com

本站总访问量 本文总阅读量