在numpy数组中找到最大值及其索引

时间:2015-11-10 21:47:39

标签: python opencv

我有一个像:

这样的数组
[ [0.0], [0.0020777732133865356], [0.0013433878775686026], [0.00021494206157512963], [8.955918747233227e-05], [0.0], [0.0], [1.7911837858264334e-05], [0.0], [1.7911837858264334e-05], [0.0], [0.0], [0.0], [0.0007702090078964829], [0.02625875361263752], [0.13904960453510284], [0.30124127864837646], [0.30514606833457947], [0.4224506914615631], [0.45712801814079285], [0.5807734131813049], [0.5874545574188232], [0.695248007774353], [0.18126779794692993], [0.11689265072345734], [0.07207723706960678], [0.06512743979692459], [0.06016586348414421], [0.04363323748111725], [0.030235182493925095], [0.03095165640115738], [0.028963441029191017], [0.03578785061836243], [0.029267942532896996]]

我想找到最大值及其索引。 我搜索过这个,但没有一个符合我的问题。 有什么解决方案吗? 感谢。

3 个答案:

答案 0 :(得分:3)

有什么问题
In [6]: ind = np.argmax(a)

In [7]: a[ind]
Out[7]: array([ 0.69524801])

由于你有一个二维数组,你可能更喜欢:

In [9]: a[ind][0]
Out[9]: 0.69524800777435303

答案 1 :(得分:0)

如果最多可以有多个值:

In [16]: arr = np.array([1,4,3,2,5,6,3,5,7,4,7,1,4,7,3])
In [17]: np.max(arr)
Out[17]: 7
In [18]: np.where(arr == np.max(arr))
Out[18]: (array([ 8, 10, 13]),)

答案 2 :(得分:0)

所以,你有一个嵌套列表。所以这是步骤。

创建新列表 将所有的细胞添加到此列表中 对列表进行排序,您将获得最大值并获得索引

这里是你的数组

myList = [ ]
for mylist in a:  
    print mylist[0]
    myList.append(mylist[0])

复制列表

import copy
sortedList = copy.copy(myList)
sortedList.sort()
sortedList.reverse()
# to Get the 5 maximum values from the list
for i in range(0,4):
    print sortedList[i]
    print myList.index(sortedList[i]