python中浮点数的最小值

Posted

技术标签:

【中文标题】python中浮点数的最小值【英文标题】:minimum of array of floats in python 【发布时间】:2013-05-17 14:01:24 【问题描述】:

如何在 Python 中找到最少的浮点数数组? min() 或 array.min() 不起作用。代码如下:

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 用户,所以这让我很困惑......

【问题讨论】:

你想要发生什么?这个答案在我看来是正确的 是的......这是正确的答案。也许你想要z[np.abs(z).argmin()] 幅度最小的数字? 看起来是正确的。您是否忘记查看 10 的负幂,这会减少数字的大小? @Makaroni -0.634 < -0.0559 是真的,不是吗?然后-0.634 更小——这就是min() 的工作原理。 -10 < -1 对吗?也可以在 Matlab 中尝试。你会得到同样的结果。这就是负数的工作原理。 【参考方案1】:

z_min = -0.63417062312627426 看起来是正确的答案。小心科学记数法。

【讨论】:

【参考方案2】:

np.min() 返回最小的数,或“最大的”负数(如果有的话)。在这种情况下,索引 7 处的条目是最小条目。在scientific notation 中是-6.34 * 10^-1,或者在长手中是-0.634...

长期打印

也许这会有所帮助:

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...

【讨论】:

顺便说一句,我猜你可能不需要这一切。我只是认为它可能会对未来的读者有所帮助。

以上是关于python中浮点数的最小值的主要内容,如果未能解决你的问题,请参考以下文章

python中浮点数的十六进制字符串表示

Java中浮点数的最大值?

Python中浮点数的二进制表示(位不是十六进制)

python 中浮点数四舍五入的问题

Python 中浮点数四舍五入的问题

shell中浮点数运算