Găsiți indicele valorilor minime în matricea dată în Python (Programare, Python, Array-Uri, Numpy)

user2766019 a intrebat.

Am nevoie să găsesc indexul mai multor valori minime care apar într-un array. Sunt destul de cunoscut cu np.argmin dar acesta îmi dă indicele primei valori minime dintr-un array. De exemplu.

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

Acesta îmi dă 0, în schimb mă aștept la, 0,5,7.

Mulțumesc!

Comentarii

  • Încercați np.where(a == a.min()) –  > Por Kobi K.
  • posibil duplicat al Obținerea indicelui elementului maxim sau minim returnat folosind max()/min() pe o listă –  > Por mlt.
3 răspunsuri
Tom Swifty

Acest lucru ar trebui să facă truc:

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

argmin nu returnează o listă așa cum vă așteptați să o facă în acest caz.

Comentarii

  • Nu, nu este așa. În plus, suprascrieți o funcție încorporată min. –  > Por Bas Swinckels.
  • @BasSwinckels ai ratat editarea mea. regular min funcționează bine, așa cum ai subliniat. –  > Por Tom Swifty.
tonjo

Poate

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

Va da [0,5,7].

Comentarii

  • Nu, nu dă, deoarece comparați cu indicele min, care este 0. –  > Por Bas Swinckels.
  • EDITAT, folosiți min în loc de argmin, scuze. –  > Por tonjo.
jrk0414

Cred că aceasta ar fi cea mai simplă cale, deși nu folosește nicio funcție numpy sofisticată

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)