【numpy】argmax参数辨析(axis=0,axis=1,axis=-1)

2022-10-22 10:45:14

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 numpyas 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 numpyas 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 numpyas 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轴方向。
在这里插入图片描述
返回的是通道数!!!
返回的是通道数!!!
返回的是通道数!!!
返回的是通道数!!!

  • 作者:胡侃有料
  • 原文链接:https://blog.csdn.net/weixin_39190382/article/details/105854567
    更新时间:2022-10-22 10:45:14