numpy.argmax() 是一个用于返回给定数组中最大值的索引的函数。它可以用于一维和多维数组,并可以指定沿特定轴计算最大值的索引。 如果数组有多个最大值,np.argmax() 返回的是第一个最大值的索引。本文主要介绍一下NumPy中argmax方法的使用。

numpy.argmax

numpy.argmax(a, axis=None, out=None)     [source]

沿着一个轴返回最大值的索引。

参数 :

a :array_like

输入数组。

axisint, 可选

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

out :array, 可选

如果提供,结果将被插入到这个数组中。

它应该是适当的形状和类型。

返回值 :

index_array : int类型的ndarray

索引数组到数组中。 

它的形状与a.shape相同,

但沿轴的尺寸已删除。

Notes

如果最大值多次出现,则返回与第一次出现对应的索引。

例子

1)二维数组的最大值索引

import numpy as np

# 创建一个二维数组
a = np.arange(6).reshape(2, 3) + 10
print("Array a:")
print(a)

# 获取整个数组中最大值的索引
max_index = np.argmax(a)
print(f"max_index: {max_index}")

# 沿着第0轴(列)计算最大值的索引
max_index_axis0 = np.argmax(a, axis=0)
print(f"max_index_axis0: {max_index_axis0}")

# 沿着第1轴(行)计算最大值的索引
max_index_axis1 = np.argmax(a, axis=1)
print(f"max_index_axis1: {max_index_axis1}")
import numpy as np

# 创建一个二维数组
a = np.arange(6).reshape(2, 3) + 10
print("Array a:")
print(a)

# 获取整个数组中最大值的索引
max_index = np.argmax(a)
print(f"max_index: {max_index}")

# 沿着第0轴(列)计算最大值的索引
max_index_axis0 = np.argmax(a, axis=0)
print(f"max_index_axis0 : {max_index_axis0}")

# 沿着第1轴(行)计算最大值的索引
max_index_axis1 = np.argmax(a, axis=1)
print(f"max_index_axis1: {max_index_axis1}")

2)获取N维数组最大值的多维索引

import numpy as np

# 创建一个二维数组
a = np.arange(6).reshape(2, 3) + 10
print("Array a:")
print(a)

# 使用 np.unravel_index 获取多维数组中最大值的索引
ind = np.unravel_index(np.argmax(a, axis=None), a.shape)
print(f"ind: {ind}")

# 获取最大值
print(f"Maximum value: {a[ind]}")

3)使用 np.argmax() 获取最大值索引并使用 np.take_along_axis() 获取最大值

import numpy as np

# 创建一个二维数组
x = np.array([[4, 2, 3], [1, 0, 3]])

# 获取最大值所在索引的数组
index_array = np.argmax(x, axis=-1)
print(f"index_array: {index_array}")

# 使用 np.take_along_axis 获取最大值
max_values = np.take_along_axis(x,
np.expand_dims(index_array, axis=-1),
axis=-1)
print(f"max_values:\n{max_values}")

# 移除多余的维度,得到最终的最大值
max_values_squeezed = max_values.squeeze(axis=-1)
print(f"max_values_squeezed: {max_values_squeezed}")

推荐文档

相关文档

大家感兴趣的内容

随机列表