np.argmax()和max()助解

一、argmax()

argmax取最大值,然后返回索引

(1)一维向量

import numpy as np

a = np.array([3, 1, 2, 4, 6, 1])
res = np.argmax(a)
print(res)

>>> 4

取a中元素最大值所对应的索引(索引默认从0开始),此时的最大值是6,其对应的位置索引值为4。

(2)二维张量

a = np.array([[1, 5, 5, 2],
              [9, 6, 2, 8],
              [3, 7, 9, 1]])
res = np.argmax(a, axis=0)
print(res)

>>> [1 2 2 1]
axis=0, 得到结果:
[1, 5, 5, 2]   [9, 6, 2, 8]   [3, 7, 9, 1] , 然后再依次取三个列表中对应元素,如下:
[1, 9, 3]  ===>  最大值9  ===>  索引1
[5, 6, 7]  ===>  最大值7  ===>  索引2
[5, 2, 9]  ===>  最大值9  ===>  索引2
[2, 8, 1]  ===>  最大值8  ===>  索引1
a = np.array([[1, 5, 5, 2],
              [9, 6, 2, 8],
              [3, 7, 9, 1]])
res = np.argmax(a, axis=1)
print(res)


>>> [1 0 2]
1, 5, 5, 2  ===> 最大值5 ===> 索引1
9, 6, 2, 8  ===> 最大值9 ===> 索引0
3, 7, 9, 1  ===> 最大值9 ===> 索引2

(3)三维张量

a = np.array([
    [
        [1, 5, 5, 2],
        [9, -6, 2, 8],
        [-3, 7, -9, 1]
    ],

    [
        [-1, 7, -5, 2],
        [9, 6, 2, 8],
        [3, 7, 9, 1]
    ],
    [
        [21, 6, -5, 2],
        [9, 36, 2, 8],
        [3, 7, 79, 1]
    ]
])
res = np.argmax(a, axis=0)
print(res)


>>> [[2 1 0 0]
    [0 2 0 0]
    [1 0 2 0]]

axis=0,得到三个二维张量,

[
    [1, 5, 5, 2],
    [9, -6, 2, 8],
    [-3, 7, -9, 1]
],
[
    [-1, 7, -5, 2],
    [9, 6, 2, 8],
    [3, 7, 9, 1]
],
[
    [21, 6, -5, 2],
    [9, 36, 2, 8],
    [3, 7, 79, 1]
]

示意图:

a = np.array([
    [
        [1, 5, 5, 2],
        [9, -6, 2, 8],
        [-3, 7, -9, 1]
    ],

    [
        [-1, 7, -5, 2],
        [9, 6, 2, 8],
        [3, 7, 9, 1]
    ],
    [
        [21, 6, -5, 2],
        [9, 36, 2, 8],
        [3, 7, 79, 1]
    ]
])
res = np.argmax(a, axis=1)
print(res)

>>> [[1 2 0 1]
     [1 0 2 1]
     [0 1 2 1]]

axis=1,得到第一组[1, 5, 5, 2], [9, -6, 2, 8], [-3, 7, -9, 1];第二组[-1, 7, -5, 2], [9, 6, 2, 8], [3, 7, 9, 1];第三组[21, 6, -5, 2], [9, 36, 2, 8], [3, 7, 79, 1]。逐个元素取最大索引,首先是第一组:

a = np.array([
    [
        [1, 5, 5, 2],
        [9, -6, 2, 8],
        [-3, 7, -9, 1]
    ],

    [
        [-1, 7, -5, 2],
        [9, 6, 2, 8],
        [3, 7, 9, 1]
    ],
    [
        [21, 6, -5, 2],
        [9, 36, 2, 8],
        [3, 7, 79, 1]
    ]
])
res = np.argmax(a, axis=2)
print(res)

>>> [[1 0 1]
     [1 0 2]
     [0 1 2]]

 axis=2,得到九组数据,如下示意图:

 二、max() 

返回最大值数值。

t = np.array([[3, 4, 1, 0], [12, 1, 2, 3], [52, 34, 88, 11]])
res1 = t.max(axis=0)
print(res1)
res2 = t.max(axis=1)
print(res2)


>>>[52 34 88 11]
    [ 4 12 88]

axis=0,得到一组一维张量:[3, 4, 1, 0], [12, 1, 2, 3], [52, 34, 88, 11],向量逐元素计算最大值,例如3, 12,52 其中的最大值为52。

axis=1,得到三组数据:第一组3, 4, 1, 0;第二组:12, 1, 2, 3;第三组:52, 34, 88, 11。第一组最大值4,第二组最大值12,...

axis=?的问题参见:

https://blog.csdn.net/MasterCayman/article/details/119488357

参考:

1.https://blog.csdn.net/weixin_43987408/article/details/115283685?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0.control&spm=1001.2101.3001.4242

2.https://blog.csdn.net/weixin_38145317/article/details/79650188

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值