numpy.round#
- numpy.round(a, decimals=0, выход=None)[источник]#
Округлить до заданного количества десятичных знаков.
- Параметры:
- aarray_like
Входные данные.
- decimalsint, необязательный
Количество знаков после запятой для округления (по умолчанию: 0). Если decimals отрицательное, оно указывает количество позиций слева от десятичной точки.
- выходndarray, необязательно
Альтернативный выходной массив для размещения результата. Он должен иметь ту же форму, что и ожидаемый вывод, но тип выходных значений будет приведён при необходимости. См. Определение типа вывода для получения дополнительной информации.
- Возвращает:
- rounded_arrayndarray
Массив того же типа, что и a, содержащий округлённые значения. Если только выход был указан, создаётся новый массив. Возвращается ссылка на результат.
Действительная и мнимая части комплексных чисел округляются отдельно. Результат округления float - это float.
Смотрите также
Примечания
Для значений, точно находящихся посередине между округленными десятичными значениями, 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'
Подпрограммы печати чисел с плавающей запятой используют точный, но гораздо более требовательный к вычислениям алгоритм для определения количества цифр после десятичной точки.
В качестве альтернативы, встроенная функция 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]“Конспект лекций о статусе IEEE 754”, Уильям Кахан, https://people.eecs.berkeley.edu/~wkahan/ieee754status/IEEE754.PDF
Примеры
>>> import numpy as np >>> 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])