every blog every motto: You can do more than you think.
0. 前言
网上一般都是axis=0,axis=1,很少有axis=-1的博客,在这进行简单的小结,后续可能会增补。
说明: 代码在 jupyter notebook中实现。
后面的三维数组看起来会更加直观!!!
1. 正文
1.1 简单介绍
argmax:一句话概括,返回最大值的索引。
当然这个索引是有讲究的。比如,学生做广播体操站队,你从前往后看,最高的在后面(在一列中比较),你横向比较(在行中比较),最高个的位置又会不一样。这里所说的“看的方向”就是axis了。
1.2 代码实现
1.2.1 一维数组
import numpy as np
numbers = np.arange(5)
numbers
numbers.argmax()
numbers.argmax(axis=0)
打乱
np.random.shuffle(numbers)
numbers
numbers.argmax()
numbers.argmax(axis=0)
1.2.2 二维数组
import numpy as np
numbers = np.arange(6).reshape(2,3)
numbers
numbers.argmax()
如下图,没有参数时,是默认将数组展平
1.2.2.1 axis=0
numbers.argmax(axis=0)
当axis=0,是在列中比较,选出最大的 行 索引
1.2.2.2 axis=1
当axis=1,是在行中比较,选出最大的 列 索引
numbers.argmax(axis=1)
1.2.2.3 打乱后,再比较
np.random.shuffle(numbers)
numbers
没有参数,默认展平
numbers.argmax()
numbers.argmax(axis=0)
当axis=0,是在列中比较,选出最大的 行 索引
numbers.argmax(axis=1)
当axis=1,是在行中比较,选出最大的 列 索引
当axis=-1时
numbers.argmax(axis=-1)
这个时候,我们发现,axis=-1,和axis=1返回的结果是一样的!!!
主要原因是axis这个参数类似列表,你可以正着来,你也倒着来。
在二维数组中,最后一位(axis=1)和(axis=-1)是一样的。
在一维数组中,最后一位(也是第一位)axis=0和axis=-1是一样的,有兴趣可以返回去验证一下。
1.2.3 三维数组
下面的三维数组,可以把它理解为两张大饼叠在一起,或是两个图层叠在一起。
import numpy as np
numbers = np.arange(24).reshape(4,3,2)
numbers
打印形状,可以理解为长为4,宽为3,通道数为2的图片。
numbers.shape
第0通道
numbers[:,:,0]
直观理解,如下图
第1通道
numbers[:,:,1]
直观理解,如下图
说白了就是两个4*3的图片叠在一起。
numbers.argmax()
默认展平,
axis=0
numbers.argmax(axis=0)
axis=0,比较方式如下图,下面是一个通道的,是[3,3,3],两个通道就是上面那个
axis=1
numbers.argmax(axis=1)
以一个通道为例,比较方式如下图,[2,2,2,2],完整的如上图显示。
axis=2
numbers.argmax(axis=2)
axis=2时,是上下两个图层的对应位置做比较
可以理解z轴方向比较,0通道在下,1通道在上。起始索引从0开始,1通道上对应位置都大于0通道,所以都是1.
返回的是通道数!!!
返回的是通道数!!!
返回的是通道数!!!
返回的是通道数!!!
axis=-1(和axis=2,相同,因为是最后一位)
numbers.argmax(axis=-1)
返回的是通道数!!!
返回的是通道数!!!
返回的是通道数!!!
返回的是通道数!!!
改变0通道一个数字
本来是0
numbers[0,0,0]
numbers[0,0,0]=100
在进行比较。
numbers.argmax(axis=2)
numbers.argmax(axis=-1)
1通道在上,0通道在下,类似两张大饼叠在一起,沿着z轴方向。
返回的是通道数!!!
返回的是通道数!!!
返回的是通道数!!!
返回的是通道数!!!