Spec-Zone.ru › NumPy 2.0

numpy.round

numpy.round(a, decimals=0, out=None)[source]

Округляет значения до заданного числа десятичных знаков.

Параметры:
aarray_like

Входные данные.

decimalsint, необязательно

Количество десятичных знаков для округления (по умолчанию: 0). Если decimals отрицательное, оно указывает количество позиций слева от десятичной точки.

outndarray, необязательно

Альтернативный массив вывода, в который следует поместить результат. Он должен иметь ту же форму, что и ожидаемый результат, но тип значений вывода будет преобразован при необходимости. Подробнее см. Определение типа результата.

Возвращает:
rounded_arrayndarray

Массив того же типа, что и a, содержащий округленные значения. Если out не был указан, создается новый массив. Возвращается ссылка на результат.

Вещественная и мнимая части комплексных чисел округляются отдельно. Результат округления числа с плавающей точкой — число с плавающей точкой.

См. также

ndarray.round

эквивалентный метод

around

псевдоним для этой функции

ceil, fix, floor, rint, trunc

Примечания

Для значений, ровно находящихся посередине между округленными значениями, NumPy округляет до ближайшего четного значения. Таким образом, 1.5 и 2.5 округляются до 2.0, -0.5 и 0.5 округляются до 0.0 и т. д.

np.round использует быстрый, но иногда неточный алгоритм для округления чисел с плавающей точкой. Для положительных decimals он эквивалентен np.true_divide(np.rint(a * 10**decimals), 10**decimals), который имеет погрешность из-за неточного представления десятичных дробей в стандарте IEEE с плавающей точкой [1] и погрешностей, возникающих при масштабировании степенями десяти. Например, обратите внимание на дополнительную «1» в следующем:

>>> np.round(56294995342131.5, 3)
56294995342131.51

Если целью является вывод таких значений с фиксированным количеством десятичных знаков, предпочтительнее использовать средства NumPy для печати чисел с плавающей точкой с ограничением количества десятичных знаков в выводе:

>>> np.format_float_positional(56294995342131.5, precision=3)
'56294995342131.5'

Встроенные средства NumPy для вывода чисел с плавающей точкой используют точный, но значительно более вычислительно затратный алгоритм для вычисления количества цифр после десятичной точки.

В качестве альтернативы, встроенная функция Python round использует более точный, но медленный алгоритм для 64-битных чисел с плавающей точкой:

>>> round(56294995342131.5, 3)
56294995342131.5
>>> np.round(16.055, 2), round(16.055, 2)  # equals 16.0549999999999997
(16.06, 16.05)

Ссылки

[1]

«Lecture Notes on the Status of IEEE 754», William Kahan, https://people.eecs.berkeley.edu/~wkahan/ieee754status/IEEE754.PDF

Примеры

>>> np.round([0.37, 1.64])
array([0., 2.])
>>> np.round([0.37, 1.64], decimals=1)
array([0.4, 1.6])
>>> np.round([.5, 1.5, 2.5, 3.5, 4.5]) # rounds to nearest even value
array([0., 2., 2., 4., 4.])
>>> np.round([1,2,3,11], decimals=1) # ndarray of ints is returned
array([ 1,  2,  3, 11])
>>> np.round([1,2,3,11], decimals=-1)
array([ 0,  0,  0, 10])

© 2005–2024 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/2.0/reference/generated/numpy.round.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API