Numpy中的axis问题
1. 中文释义
axis
n. 轴(旋转物体假想的中心线); (尤指图表中的) 固定参考轴线,坐标轴; 对称中心线(将物体平分为二);
复数:axes
2. axis与多维数组
由于Numpy经常用于处理多维数组,我们常理解的行和列一般指二维数组,但对于计算机来说,它只认识下标
一维数组如 A[3] 只有一个下标, axis=0对应数组的列标, 使用axis=1会报错.
对于二维数组B[2][2], axis=0对应数组的行标, axis=0对应数组的行标.
对于三维数组则分别对应 页 列 行.
对应代码分析如下:
import numpy as np
A = np.arange(14,2,-1)
B = np.arange(14,2,-1).reshape((3,4))
其中A为一维数组,B为二维数组,内容如下:
A
array([14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3])
B
array([[14, 13, 12, 11],
[10, 9, 8, 7],
[ 6, 5, 4, 3]])
A.min(axis=0)
A对应axis=0这一行的最小值
B.min(axis=0)
array([6, 5, 4, 3])
B对应axis=0的最小值为每一列的最小值
B.min(axis=1)
array([11, 7, 3])
B对应axis=1的最小值为每行的最小值
3. 一个好用的记法
就是一句话:
axis等于几, 就从数组的第几个下标变化的方向移动(从零开始计数)
下面有两张图,一看便知:
图一是求A.min(axis=0), 我们可以看到, Numpy沿着行变列不变的方向移动,最终求出了数组每一列的最小值
图二是求A.min(axis=1), 我们可以看到, Numpy沿着列变行不变的方向移动,最终求出了数组每一行的最小值