2014-09-27 11 views
5

Gegeben ein Array Ich muss das Minimum und die Position des Minimums finden. Dies kann getan werden,Minimum und Argmin in Numpy

>>> current_cost 
array([ 2.54802261, 2.98627555, 0.23873749, 1.82511195, 1.35469083]) 
>>> current_cost.min() 
0.23873748917821858 
>>> current_cost.argmin() 
2 

Diese Lösungen verwenden ist nicht sehr effizient, weil er die Liste zweimal scannen muss. Gibt es eine Möglichkeit, Minimum und Agrin gleichzeitig zu erhalten?

+0

Wenn Sie dies in einer inneren Schleife tun, sollten Sie vielleicht einen Haufen oder Baum verwenden. – user1277476

+0

Ich verwende es in einer Schleife. Die Werte der Vektorstromkosten ändern sich bei jeder Iteration – Donbeo

+0

Es sollte wirklich eine Funktion "np.arg ** und ** min (...)" geben. – denvar

Antwort

9
min_pos = current_cost.argmin() 
min_val = current_cost[min_pos] 
+1

Wie würde das funktionieren, wenn Sie den Argmin einer multidimensionalen Methode verwenden? Array entlang einer Achse? 'min_pos = a.argmin (Achse = 1)', 'min_vals =?' –

+0

@MartinWiebusch 'min_val = aktueller_Kosten [np.Arrange (current_cost.shape [0]), min_pos]' funktioniert; nicht sicher, ob es etwas Schöneres gibt. – mc10