📅  最后修改于: 2023-12-03 15:40:14.328000             🧑  作者: Mango
在 Python 中,我们可以通过内置的函数 max
来获取一个序列中的最大值。但是,如果我们想要获取最大值所在的位置,该怎么做呢?
下面是几种获取最大值索引的方法:
如果我们的序列是一个列表,可以直接使用列表的 index()
方法来获取最大值的索引,代码片段如下:
lst = [3, 5, 2, 7, 9, 1, 4]
max_index = lst.index(max(lst))
print(max_index) # 输出:4
在上面的代码中,我们使用了 max
函数来获取 lst
列表中的最大值,然后直接调用了 index
方法来获取最大值在列表中的索引。
如果我们的序列不是一个列表,可以使用 enumerate()
函数将序列中的值和索引进行组合,然后再找出最大值的索引,代码片段如下:
tpl = (3, 5, 2, 7, 9, 1, 4)
max_index = max(enumerate(tpl), key=lambda x: x[1])[0]
print(max_index) # 输出:4
在上面的代码中,我们使用了 enumerate()
函数将元组 tpl
中的值和索引组合成了一个可迭代对象,然后再通过 max()
函数找出组合后的最大值及其索引。
我们通过 key
参数指定了一个函数 lambda x: x[1]
,这个函数的作用是返回组合对象中的第二个元素,也就是原序列中的值。最后我们取出了最大值的索引,也就是组合对象中的第一个元素。
如果我们的序列比较大,使用内置函数或者列表的 index()
方法可能会比较慢。这时可以使用 NumPy 库来进行处理,代码片段如下:
import numpy as np
arr = np.array([3, 5, 2, 7, 9, 1, 4])
max_index = np.argmax(arr)
print(max_index) # 输出:4
在上面的代码中,我们使用了 NumPy 库中的 argmax()
函数来获取数组 arr
中的最大值的索引。这个函数会返回数组中最大值的索引,如果数组有多个最大值,则返回第一个最大值的索引。
以上就是获取最大值索引的几种方法,根据具体情况选择合适的方法即可。