1. 引言
在利用tensorflow或者numpy对向量/数组(下文统称向量)进行操作时,开发者可以通过设置axis参数来对向量中特定的维度进行操作。因此,理解axis究竟指向哪一个维度就变成了一个重要的问题。本文将结合相应例子,简明扼要地对axis的指向进行介绍。本文重点在于解释axis指向性,下文将统一使用numpy.sum()
作为例子进行讲解。
2. 什么是维度?
在日常应用中,维度一般存在两种解释。第一种解释即大家熟悉的坐标数目,例如,[1,3,4]是一维的,这是一条直线。[[1,2],[3,4]]是一个方阵,是二维的。第二种解释认为维度即特征数目。例如,形容用身高,体重,收入三个特征可以具体描述一个人,用这三个特征形成的向量:[身高,体重,收入]
是一个三维向量。这两种解释读者应该加以区别。axis对应第一种解释,即针对坐标数目来指定维度的。
3. axis的指向
3.1 对维度的一些理解
高维向量其实就是一个把低维向量作为元素的向量。例如:[[1,2],[2,3]]是一个二维向量,这其实是把一维向量([1,2],[2,3])作为元素的向量。三维数组[ [[1,2], [3,4]], [[5,6], [7,8]] ]就是把二维向量([[1,2], [3,4]]和[[5,6], [7,8]])作为元素的向量。这样一点理解至关重要。3.2小节将用三位向量为例,说明axis的指向,3.3小节将尝试对四维数组进行axis的指向说明。
3.2 以三维数组为例
三维向量,可以用三维笛卡尔坐标系进行描述。现在有一个形状为2* 3 * 4的三维的向量:
[[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]],
[[ 13 14 15