快速理解axis

axis在tensorflow和numpy中式经常出现的一个参数,但是有时可能并不是很好的理解axis=0或者axis=1是沿着什么方向进行计算的,经过我的实践,在这里写出理解。

二维矩阵

In [10]: a
Out[10]:
array([[1, 2, 3],
       [4, 5, 6]])

In [11]: np.amax(a , axis=0)
Out[11]: array([4, 5, 6])

In [12]: np.amax(a, axis=1)
Out[12]: array([3, 6])

* amax是求最大值

如上是一个求二维矩阵在每个维度的最大值,当axis=0时,实际上是在列的方向求的最大值;而axis=1时是在行的方向球的最大值。

我们可以把括号当作axis来理解,最外层的括号对应着axis=0,再往内的括号对应axis=1。因此axis=0就是要把最外层的括号去掉。

我们把上述数组放到坐标轴上如下所示,坐标有两个轴。

我们发现[1, 2, 3]和[4, 5, 6]两个向量沿纵轴方向排列,同时这两个向量被最外层的[]所包裹。因此可以认为纵轴对应的是最外层的括号,axis=0就是在最外层的括号的方向上的计算,因此就是纵轴方向,最后结果就是[4, 5, 6]。

同理axis=1就是在内层括号的维度上进行计算,内层括号包裹的是每一个向量,内层括号对应的是横轴,于是结果就是[3, 6]

 

三维矩阵

In [3]: a
Out[3]:
array([[[1, 3, 4],
        [5, 6, 8]],

       [[5, 7, 9],
        [2, 3, 8]]])


In [5]: np.amax(a, 0)
Out[5]:
array([[5, 7, 9],
       [5, 6, 8]])

In [6]: np.amax(a, 1)
Out[6]:
array([[5, 6, 8],
       [5, 7, 9]])

In [7]: np.amax(a, 2)
Out[7]:
array([[4, 8],
       [9, 8]])

三维矩阵有三层括号,因此axis=0对应最外层,axis=1对应中层,axis=2对应最里层。

我们再表示在坐标轴上。可以看到最外层括号包裹的是两个二维矩阵,这两个二维矩阵排列的方向是向内的那个轴,因此axis=0对应的就是沿着这个轴上取最大值;而第二层包裹的是一维的向量,因此在第二层的向量方向取最大值。

当维度大于3的时候无法用坐标轴表示,不过可以用同样的思想进行理解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值