You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Numpy argmax函数工作原理:为何输出[0,0,0]与[2,2,2,2]?

理解NumPy中argmax函数的输出

嘿,我完全懂你的困惑!你之前用sum函数时,它确实返回的是沿指定轴计算的求和结果,但np.argmax的功能和它有着本质区别——它返回的是最大值所在的位置(索引),而不是最大值本身,这就是你看到输出全是0和2的原因!

先回顾一下你的数组:

import numpy as np
x = np.array([[12,11,10,9],[16,15,14,13],[20,19,18,17]])

打印出来是:

[[12 11 10 9]
 [16 15 14 13]
 [20 19 18 17]]

为什么np.argmax(x, axis=1)返回[0 0 0]

当指定axis=1时,argmax会沿着每一行单独查找最大值的索引:

  • 第一行[12,11,10,9]的最大值是12,它在这一行的第0个位置(Python索引从0开始计数),所以返回0;
  • 第二行[16,15,14,13]的最大值是16,同样在第0个位置,返回0;
  • 第三行[20,19,18,17]的最大值是20,还是在第0个位置,返回0;
    最终结果就是[0 0 0]

为什么np.argmax(x, axis=0)返回[2 2 2 2]

当指定axis=0时,argmax会沿着每一列单独查找最大值的索引:

  • 第一列[12,16,20]的最大值是20,它在这一列的第2个位置(对应数组的第三行,索引从0开始),所以返回2;
  • 第二列[11,15,19]的最大值是19,在第2个位置,返回2;
  • 第三列[10,14,18]的最大值是18,在第2个位置,返回2;
  • 第四列[9,13,17]的最大值是17,在第2个位置,返回2;
    最终结果就是[2 2 2 2]

补充:如果想获取最大值本身怎么办?

如果你想要得到沿轴的最大值(而不是索引),可以使用np.max()函数:

  • np.max(x, axis=1)会返回[12 16 20],也就是每一行的最大值;
  • np.max(x, axis=0)会返回[20 19 18 17],也就是每一列的最大值。

内容的提问来源于stack exchange,提问作者user859385

火山引擎 最新活动