2014-09-27 17 views
5

給定一個數組我需要找到最小值和最小值的位置。 這可以使用最小和argmin在numpy

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

此解決方案來實現,因爲它需要掃描列表兩次是不是很有效。 有沒有辦法同時獲得最小和agrmin?

+0

如果你在內循環中這樣做,你可能應該使用堆或樹。 – user1277476 2014-09-27 18:50:27

+0

我正在循環中使用它。向量當前代價的值每次迭代都會改變 – Donbeo 2014-09-27 19:51:46

+0

實際上應該有一個函數「np.arg **和** min(...)」 – denvar 2017-11-01 00:22:39

回答

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

當您採用多維的argmin時,這將如何工作沿着一個軸陣列? 'min_pos = a.argmin(axis = 1)','min_vals =?' – 2017-03-15 18:46:58

+0

@MartinWiebusch'min_val = current_cost [np.arange(current_cost.shape [0]),min_pos]'works;不知道是否有更好的。 – mc10 2017-12-07 00:53:01