2013-05-22 134 views
1

我如何在Python中找到浮點數的最小值? min()或array.min()不起作用。下面是代碼:最小的浮點數在python中

import numpy as np 

z=np.array([[ -4.26141957e-01], 
     [ -2.26582552e-01], 
     [ -7.28807682e-03], 
     [ 2.72843324e-02], 
     [ -5.59146620e-02], 
     [ -2.06062340e-05], 
     [ 1.06954166e-09], 
     [ -6.34170623e-01], 
     [ 5.07841198e-02], 
     [ -1.89888605e-04]]) 

z_min=z.min() 

這給z_min = -0.63417062312627426。我是一個Matlab用戶,所以這讓我很困惑...

+4

喲你想要發生什麼?這個答案對我來說是正確的 –

+2

是的......這是正確的答案。也許你想'z [np.abs(z).argmin()]'數量最少? – Geoff

+1

看起來正確。你是否忘記看十個負面的權力,這會減少數量的大小? –

回答

3

np.min()返回最小的數字或「最大」負數(如果有的話)。在這種情況下,索引7處的條目是最低條目。長期存在於scientific notation-0.634...中的-6.34 * 10^-1

打印所有在長手

或許這將幫助:

print "\n".join(["%+0.10f" % e for e in z]) 

-0.4261419570 
-0.2265825520 
-0.0072880768 
+0.0272843324 
-0.0559146620 
-0.0000206062 
+0.0000000011 
-0.6341706230 
+0.0507841198 
-0.0001898886 

要驗證你的答案

以下將顯示,僅一個項目有這個最低值。

z <= z.min() 

array([[False], 
     [False], 
     [False], 
     [False], 
     [False], 
     [False], 
     [False], 
     [ True], 
     [False], 
     [False]], dtype=bool) 

再舉一個例子

最接近零的數量可以發現這樣的:

z[np.abs(z).argmin()] 

其在長手1.06954166e-09 = 1.069 * 10^-09科學記數法或0.000000000106...

+1

順便說一句,我猜你可能不需要所有這些。我只是覺得它可能會幫助未來的讀者。 – Geoff

5

z_min = -0.63417062312627426看起來是正確的答案。小心科學記數法。