numpy.rint 和 numpy.round 的区别

use*_*264 7 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.])
Run Code Online (Sandbox Code Playgroud)

Par*_*raj 9

这是区别:

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.])
Run Code Online (Sandbox Code Playgroud)

np.round()当你想四舍五入到任何小数位时,你基本上使用,就像这里我已经做了一位小数,所以我得到-1.7-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)
Run Code Online (Sandbox Code Playgroud)

我们可以很清楚地看到,np.rint()完成工作的速度大约比np.round()

希望这可以帮助!

  • 我可以想到的一种可能是计算速度,我已经更新了我的答案,请看一看。 (2认同)