我有一个特定的场景,我需要扫描数组的特定部分以获得该部分的最大值,并返回该值相对于整个数组的位置。 例如
searchArray = [10,20,30,40,50,60,100,80,90,110]
我想扫描第3至8部分中的最大值,(40,50,60,100,80,90)
然后返回该值的位置。
因此在这种情况下,最大值为100,位置为6
有没有办法单独使用python或使用oy numpy
帮助答案 0 :(得分:1)
首先对列表进行切片,然后在max函数上使用index:
searchArray = [10,20,30,40,50,60,100,80,90,110]
slicedArray = searchArray[3:9]
print slicedArray.index(max(slicedArray))+3
这将返回切片数组的索引以及添加的beginSlice
答案 1 :(得分:1)
试试这个......假设你想要整个列表中的最大索引 -
import numpy as np
searchArray = [10,20,30,40,50,60,100,80,90,110]
start_index = 3
end_index = 8
print (np.argmax(searchArray[start_index:end_index+1]) + start_index)
答案 2 :(得分:1)
使用enumerate
获取枚举的元组列表(实际上它是一个生成器,这意味着它总是只需要一个条目的内存而不是整个列表的内存),然后使用{ {1}}使用自定义比较器函数来查找最大值:
max
答案 3 :(得分:0)
我这样做:
sliced = searchArray[3:9]
m = max(sliced)
pos = sliced.index(m) + 3
我已在该位置添加了3
的偏移量,以便为您提供未修改列表中的真实索引。
答案 4 :(得分:0)
使用itemgetter
:
pos = max(enumerate(searcharray[3:9], 3), key=itemgetter(1))[0]
答案 5 :(得分:-3)
我想这就是你想要的
maxVal = max(searchArray[3:8]) // to get max element
position = searchArray.index(max(ary[3:8])) //to get the position of the index