为什么会有axis这个东西,原因很简单:numpy是针对矩阵或者多为数组进行运算的,而在多维数组中,对数据的操作有太多的可能,我们先来看一个例子。
二维
比如我们有一个二维数组:
>>> import numpy as np
>>> data = np.array([ [1,2,1],
[0,3,1],
[2,1,4],
[1,3,1] ])
这个数组代表了样本数据的特征,其中每一行代表一个样本的三个特征,每一列是不同样本的特征。
如果在分析样本的过程中需要对每个样本的三个特征求和,该如何处理?简单:
>>> np.sum(data, axis=1)
array([4, 4, 7, 5])
那如果想求每种特征的最小值,该如何处理?也简单:
>>> np.min(data, axis=0)
array([0, 1, 1])
又如果想得知所有样本所有特征的平均值呢?还是很简单:
>>> np.average(data)
1.6666666666666667
由此可以看出,通过不同的axis,numpy会沿着不同的方向进行操作:
- 如果不设置,那么对所有的元素操作;
- 如果axis=0,则沿着纵轴进行操作;
- axis=1,则沿着横轴进行操作。
多维
可以总结为一句话:设axis=i,则numpy沿着第i个下标变化的放下进行操作。
例如刚刚的例子,可以将表示为:data =[[a00, a01],[a10,a11]],所以axis=0时,沿着第0个下标变化的方向进行操作,也就是a00->a10, a01->a11,也就是纵坐标的方向,axis=1时也类似。