先说结论
numpy中的axis与shape有关,shape为一个tuple,这个tuple的index即为所在的axis。例如一个ndarray形状为(4,3,2),则4对应的axis为0,3对应的axis为1,2对应的axis为2。
import numpy as np
x=np.arange(24).reshape(4,3,2)
print(x)
运行结果:
[[[ 0 1]
[ 2 3]
[ 4 5]]
[[ 6 7]
[ 8 9]
[10 11]]
[[12 13]
[14 15]
[16 17]]
[[18 19]
[20 21]
[22 23]]]
也即,最外层括号axis=0,每向内增加一层括号,axis加1。
求axis=0的最大值
print(x.max(axis=0))
[[18 19]
[20 21]
[22 23]]
分析:只看最外层括号,最外层括号内是由4个元素组成,每个元素是由一个3*2的矩阵(二维数组)组成。求axis=0的最大值即求这四个元素的最大值,因为元素为矩阵(3*2),最大值即矩阵element-wise(对应元素)的最大值。例如四个矩阵中第一个元素分别为0、6、12、18,所以最大值为18。以此类推:
m a x ( [ 0 1 2 3 4 5 ] + [ 6 7 8 9 10 11 ] + [ 12 13 14 15 16 17 ] + [ 18 19 20 21 22 23 ] ) = [ 18 19 20 21 22 23 ] max(\left[ \begin{matrix} 0 & 1 \\ 2 & 3 \\ 4 & 5 \end{matrix} \right]+\left[ \begin{matrix} 6 & 7 \\ 8 & 9 \\ 10 & 11 \end{matrix} \right]+\left[ \begin{matrix} 12 & 13 \\ 14 & 15 \\ 16 & 17 \end{matrix} \right]+\left[ \begin{matrix} 18 & 19 \\ 20 & 21 \\ 22 & 23 \end{matrix} \right])=\left[ \begin{matrix} 18 & 19 \\ 20 & 21 \\ 22 & 23 \end{matrix} \right] max(⎣⎡024