geekdoc-python-zh/docs/askpython/numpy-argmax.md

4.1 KiB
Raw Permalink Blame History

Python np.argmax()函数

原文:# t0]https://www . aspython . com/python-modules/num py/numpy-argmax

NumPy (np)是最流行的数学和科学计算库之一。它提供了许多处理多维数组的函数。在本文中,我们将重点介绍 Python np.argmax()函数


Python np.argmax()函数

顾名思义, argmax() 函数返回 NumPy 数组中最大值的索引。如果有多个索引具有相同的最大值,将返回第一个索引。

argmax()语法:

np.argmax( a axis=None out=None *** keep dims =)

第一个参数是输入数组。如果没有提供轴,数组变平,然后返回最大值的索引。

如果我们指定 ,它返回沿给定轴的索引值。

第三个参数用于传递数组参数来存储结果,它应该具有正确的形状和数据类型才能正常工作。

如果 keepdims 被传为真,则被缩减的轴作为尺寸为 1 的尺寸留在结果中。

让我们看一些使用 argmax()函数的例子来正确理解不同参数的用法。


1.使用 np.argmax()找到最大值的索引

>>> import numpy as np
>>> arr = np.array([[4,2,3], [1,6,2]])
>>> arr
array([[4, 2, 3],
       [1, 6, 2]])
>>> np.ndarray.flatten(arr)
array([4, 2, 3, 1, 6, 2])
>>> np.argmax(arr)
4

np.argmax()返回 4因为数组首先被展平然后返回最大值的索引。因此在这种情况下最大值为 6其在展平数组中的索引为 4。

但是,我们希望索引值在一个普通的数组中,而不是扁平的数组中。所以,我们必须使用***【arg max()underline _ index()***函数来获得正确格式的索引值。

>>> np.unravel_index(np.argmax(arr), arr.shape)
(1, 1)
>>>


2.沿着轴寻找最大值的索引

如果您想要沿不同轴的最大值的索引,请传递轴参数值。如果我们传递 axis=0则返回列中最大值的索引。对于轴=1返回沿行最大值的索引。

>>> arr
array([[4, 2, 3],
       [1, 6, 2]])
>>> np.argmax(arr, axis=0)
array([0, 1, 0])
>>> np.argmax(arr, axis=1)
array([0, 1])

对于轴= 0第一列值是 4 和 1。所以最大值索引为 0。类似地对于第二列值是 2 和 6因此最大值索引是 1。对于第三列值为 3 和 2因此最大值索引为 0。这就是为什么我们得到的输出是一个数组([010])。

对于轴= 1第一行值是(423),因此最大值索引是 0。对于第二行值为(162),因此最大值索引为 1。因此输出数组([01])。


3.使用具有多个最大值的 np.argmax()

>>> import numpy as np
>>> arr = np.arange(6).reshape(2,3)
>>> arr
array([[0, 1, 2],
       [3, 4, 5]])
>>> arr[0][1] = 5
>>> arr
array([[0, 5, 2],
       [3, 4, 5]])
>>> np.argmax(arr)
1
>>> arr[0][2] = 5
>>> arr
array([[0, 5, 5],
       [3, 4, 5]])
>>> np.argmax(arr)
1
>>> np.argmax(arr, axis=0)
array([1, 0, 0])
>>> np.argmax(arr, axis=1)
array([1, 2])
>>> 

我们使用 arange()函数创建一个带有一些默认值的 2d 数组。然后,我们更改其中一个值,使多个索引具有最大值。从输出中可以清楚地看到,当有多个位置具有最大值时,返回最大值的第一个索引。


摘要

NumPy argmax()函数很好理解只需要记住在找到最大值的索引之前数组是展平的。此外axis 参数对于查找行和列的最大值的索引非常有帮助。

下一步是什么?

资源