web-dev-qa-db-fra.com

Trouver l'index des valeurs minimales dans un tableau donné en Python

J'ai besoin de trouver l'index de plusieurs valeurs minimales dans un tableau. Je suis assez connu avec np.argmin mais cela me donne l'indice de la toute première valeur minimale dans un tableau. Par exemple. 

a = np.array([1,2,3,4,5,1,6,1])    
print np.argmin(a)

Cela me donne 0, je m'attends à la place, 0,5,7.

Merci! 

15
user2766019

Cela devrait faire l'affaire: 

a = np.array([1,2,3,4,5,1,6,1]) 
print np.where(a == a.min())

argmin ne renvoie pas une liste comme vous le souhaitez dans ce cas. 

23
Tom Swifty

Peut être

mymin = np.min(a)
min_positions = [i for i, x in enumerate(a) if x == mymin]

Cela donnera [0,5,7].

3
tonjo

Je pense que ce serait le moyen le plus simple, bien qu'il n'utilise aucune fonction numpy sophistiquée

a       = np.array([1,2,3,4,5,1,6,1])                                        
min_val = a.min()                                                            

print "min_val = {0}".format(min_val)                                        

# Find all of them                                                           
min_idxs = [idx for idx, val in enumerate(a) if val == min_val]              
print "min_idxs = {0}".format(min_idxs)
1
jrk0414