numpy.rint和numpy.round之间的区别

时间:2019-06-25 09:33:18

标签: python numpy

numpy.rint和numpy.round / numpy.around有什么区别?它们似乎都执行相同的功能:

>>> a
array([-1.7, -1.5, -0.2,  0.2,  1.5,  1.7,  2. ])
>>> np.round(a)
array([-2., -2., -0.,  0.,  2.,  2.,  2.])
>>> np.rint(a)
array([-2., -2., -0.,  0.,  2.,  2.,  2.])

1 个答案:

答案 0 :(得分:1)

这是区别:

A = np.array([-1.72, -1.58, -0.2, 0.2, 1.5, 1.7, 2.0])
np.round(A,1)
array([-1.7, -1.6, -0.2,  0.2,  1.5,  1.7,  2. ])
np.rint(A)
array([-2., -2., -0.,  0.,  2.,  2.,  2.])

当您想舍入到小数点后一位时,基本上就使用np.round(),例如这里我已经将其保留一位小数,因此我得到-1.7的{​​{1}}而不是{{1 }}是-1.72

-2完成工作时使用np.rint()的一个可能原因是前者提供给我们的计算速度。当我同时运行两个代码片段并记录了操作时间时,这就是我得到的

np.rint(x)

我们可以很好地看到np.round(x,0)完成工作的速度大约是%%timeit np.round(A,0) 5.16 µs ± 495 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each) %%timeit np.rint(A) 1.06 µs ± 28.9 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each) 的五倍。

希望这会有所帮助!