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中浮点数的最小值的主要内容,如果未能解决你的问题,请参考以下文章