numpy.round
- numpy.round(a, decimals=0, out=None)[source]
-
Округляет значения до заданного числа десятичных знаков.
- Параметры:
-
- aarray_like
-
Входные данные.
- decimalsint, необязательно
-
Количество десятичных знаков для округления (по умолчанию: 0). Если decimals отрицательное, оно указывает количество позиций слева от десятичной точки.
- outndarray, необязательно
-
Альтернативный массив вывода, в который следует поместить результат. Он должен иметь ту же форму, что и ожидаемый результат, но тип значений вывода будет преобразован при необходимости. Подробнее см. Определение типа результата.
- Возвращает:
-
- rounded_arrayndarray
-
Массив того же типа, что и
a, содержащий округленные значения. Еслиoutне был указан, создается новый массив. Возвращается ссылка на результат.Вещественная и мнимая части комплексных чисел округляются отдельно. Результат округления числа с плавающей точкой — число с плавающей точкой.
См. также
Примечания
Для значений, ровно находящихся посередине между округленными значениями, 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