2013-05-22 115 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看起来是正确的答案。小心科学记数法。