numpy.argmax
numpy.argmax(a, axis=None, out=None) [source]
沿着一个轴返回最大值的索引。
参数 : | a :array_like 输入数组。 axis : 默认情况下,索引位于平面数组中,否则沿指定的轴。 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}")