【发布时间】:2019-04-11 14:11:45
【问题描述】:
我读到 numpy 在舍入方面是公正的,并且它的工作方式与其设计的方式相同。 “如果你总是将 0.5 舍入到下一个最大的数字,那么一堆舍入数字的平均值可能略大于未舍入数字的平均值:这种偏差或漂移会对某些数值算法和使它们不准确。”
忽略这些信息并假设我总是想四舍五入,我怎么能在 numpy 中做到这一点?假设我的数组可能很大。
为简单起见,假设我有数组:
import numpy as np
A = [ [10, 15, 30], [25, 134, 41], [134, 413, 51]]
A = np.array(A, dtype=np.int16)
decimal = A * .1
whole = np.round(decimal)
十进制看起来像:
[[ 1. 1.5 3. ]
[ 2.5 13.4 4.1]
[ 13.4 41.3 5.1]]
整体看起来像:
[[ 1. 2. 3.]
[ 2. 13. 4.]
[ 13. 41. 5.]]
如您所见,1.5 四舍五入为 2,2.5 也四舍五入为 2。我如何强制始终获得 XX.5 的向上取整答案?我知道我可以遍历数组并使用 python round() 但这肯定会慢得多。想知道是否有办法使用 numpy 函数来做到这一点
【问题讨论】:
-
你希望负数有什么行为? -2.5 应该舍入到 -3.0 还是 -2.0?
-
这是一个很好的问题,虽然在我的场景中没有负数所以我没有真正想到它