pythonargmaxaxis1_1.3argmax axis参数详细解析及理解

argmax()函数的axis参数特别迷,很奇怪,而且往往就算花了大功夫搞明白之后也还是似懂非懂

下面简要介绍下这个函数

官方介绍

argmax(a, axis=None, out=None)

Returns the indices of the maximum values along an axis.

Parameters

----------

a : array_like

Input array.

axis : int, optional

By default, the index is into the flattened array, otherwise

along the specified axis.

out : array, optional

If provided, the result will be inserted into this array. It should

be of the appropriate shape and dtype.

返回沿轴的最大值的索引。

axis:整数,可选

默认情况下,索引位于扁平数组中,否则沿指定轴执行。

自我理解

官方介绍等于没说,因为大多数新手还是看不明白。我是这样理解的:

我们把矩阵想象成空间中的一个长方体(当然4维及以上同理是超立方体)

以三维为例,矩阵mat = [[[3],[4]],[[2],[5]],[[1],[6]]],是一个3*2*1的立方体:

c6096f9e313ec55fd5adb7da2ea12ea6.png

或者说,它的形状是3页、2行、1列

那么argmax(mat, 0)就表示,沿着第0个维度,也就是“3页”那个维度,查找最大值的索引:

e1b6930d23403ed76f28edb4d9fab0be.png

这时候返回的应该是一个2行1列的矩阵,也这个矩阵的形状跟沿着这个维度排列的各个单元的形状相同:

4b7070f32591a232b144933ade6bc9f2.png

当然代码方面也得到了验证:

>>> mat = np.array([[[3],[4]],[[2],[5]],[[1],[6]]])

>>> mat.shape

(3, 2, 1)

>>> np.argmax(mat, 0)

array([[0],

[2]], dtype=int64)

那argmax(mat, 1)呢?根据我们刚才的理解,应该是沿着“2行”这个维度进行查找,然后因为有3个可以作用的单元([[3], [4]]就是三维矩阵中的一个单元,[[2],[5]],[[1],[6]]都是,总共有3个)所以最后返回的应该是3个结果矩阵组成的一个大矩阵:

d573e0de9d8a3d902baff601327b9ee6.png

代码方面验证:

>>> np.argmax(mat, 1)

array([[1],

[1],

[1]], dtype=int64)

那么最后,如果是argmax(mat, 2)呢?代码方面的验证结果是:

np.argmax(a, 2)

array([[0, 0],

[0, 0],

[0, 0]], dtype=int64)

你能想明白吗?

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值