Разница между numpy.rint и numpy.round - PullRequest
1 голос
/ 25 июня 2019

В чем разница между 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 Ответ

1 голос
/ 25 июня 2019

В этом разница:

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.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)

Мы очень хорошо видим, что np.rint() выполняет работу примерно в пять раз быстрее, чем np.round().

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...