¿Cómo hacer que numpy.argmax devuelva todas las apariciones del máximo?

Estoy tratando de encontrar una función que devuelva todas las apariciones del máximo en una lista determinada.

numpy.argmax embargo, numpy.argmax solo devuelve la primera aparición que encuentra. Por ejemplo:

 from numpy import argmax list = [7, 6, 5, 7, 6, 7, 6, 6, 6, 4, 5, 6] winner = argmax(list) print winner 

Solo da el índice 0 . Pero quiero que dé todos los índices: 0, 3, 5 .

Como indica la documentación de np.argmax : “En caso de que se produzcan varias np.argmax los valores máximos, se devuelven los índices correspondientes a la primera aparición”. , así que necesitarás otra estrategia.

Una opción que tiene es usar np.argwhere en combinación con np.amax :

 >>> import numpy as np >>> listy = [7, 6, 5, 7, 6, 7, 6, 6, 6, 4, 5, 6] >>> winner = np.argwhere(listy == np.amax(listy)) >>> print(winner) [[0] [3] [5]] >>> print(winner.flatten().tolist()) # if you want it as a list [0, 3, 5] 

Mucho más simple …

list [list == np.max (list)]