numpy中axis的通俗理解

先说结论

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(024135+68107911+121416131517+182022192123)=182022192123

求axis=1的最大值

print(x.max(axis=1))
[[ 4  5]
 [10 11]
 [16 17]
 [22 23]]

分析:现在只看axis=0中的每一个3*2矩阵(二维数组),每一个二维数组是由三个元素(一维数组)组成。求axis=1的最大值即求三个元素的最大值,因为元素为矩阵(1*2),最大值即矩阵element-wise(对应元素)的最大值。以第一个矩阵为例:

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

m a x ( [ 0 1 ] + [ 2 3 ] + [ 4 5 ] ) = [ 4 5 ] max(\left[ \begin{matrix} 0 & 1 \\ \end{matrix} \right]+\left[ \begin{matrix} 2 & 3 \\ \end{matrix} \right]+\left[ \begin{matrix} 4 & 5 \\ \end{matrix} \right])=\left[ \begin{matrix} 4 & 5 \\ \end{matrix} \right] max([01]+[23]+[45])=[45]

其它几个矩阵求法一样。

求axis=2的最大值

print(x.max(axis=2))
[[ 1  3  5]
 [ 7  9 11]
 [13 15 17]
 [19 21 23]]

分析:现在只看axis=1中的每一个一维数组。每一个一维数组都是由scalar组成,最大值即为数组中最大的元素,例:
m a x ( [ 0 1 ] ) = 1 m a x ( [ 2 3 ] ) = 3 m a x ( [ 4 5 ] ) = 5 ) max(\left[ \begin{matrix} 0 & 1 \\ \end{matrix} \right])=1 \\ max(\left[ \begin{matrix} 2 & 3 \\ \end{matrix} \right])=3 \\ max(\left[ \begin{matrix} 4 & 5 \\ \end{matrix} \right])=5) max([01])=1max([23])=3max([45])=5)
其他求法类似。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

X+Y=Z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值