【发布时间】:2012-08-12 02:19:03
【问题描述】:
我正在寻找一种以更直观的方式对 numpy 数组进行舍入的方法。我有几个浮点数,并希望将它们限制在小数点后几位。 这将是这样完成的:
>>>import numpy as np
>>>np.around([1.21,5.77,3.43], decimals=1)
array([1.2, 5.8, 3.4])
现在,当尝试对恰好在舍入步骤之间的数字进行舍入时,就会出现问题。我希望 0.05 舍入到 0.1,但 np.around 设置为舍入到“最近的 even 数”。这会产生以下结果:
>>>np.around([0.55, 0.65, 0.05], decimals=1)
array([0.6, 0.6, 0.0])
然后我的问题是,最有效的方法是四舍五入到最接近的数字,而不仅仅是最接近的偶数。
有关 np.around 的更多信息,请参阅its documentation。
【问题讨论】:
-
python round() 而不是 numpy.around()?
-
0.05 与 0.0 和 0.1 的距离完全相同;也不是最近的。 “最近偶数”规则的原因是为了减少整体误差。
-
是的,这种行为是浮点数的 IEEE 标准。此外,如果您知道您将始终使用特定精度的浮点数,python 有一个
decimal类型 -
为什么需要对它们进行四舍五入?只是为了显示一些没有不必要的小数的结果?
标签: python arrays numpy rounding