如何从python中的数组的特定部分获取最大值

时间:2016-05-25 07:51:52

标签: python arrays numpy max

我有一个特定的场景,我需要扫描数组的特定部分以获得该部分的最大值,并返回该值相对于整个数组的位置。 例如

 searchArray = [10,20,30,40,50,60,100,80,90,110]

我想扫描第3至8部分中的最大值,(40,50,60,100,80,90)

然后返回该值的位置。

因此在这种情况下,最大值为100,位置为6

有没有办法单独使用python或使用oy numpy

帮助

6 个答案:

答案 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

See this code running on ideone.com

答案 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