Для округления элементов массива NumPy до указанного количества десятичных знаков используется функция np.round() в Python. Он эффективно обрабатывает большие массивы и придерживается правила «округления от половины до чета» для средних значений.

Функция np.round() в Python, являющаяся частью библиотеки NumPy, используется для округления элементов массива до указанного количества десятичных знаков. Он принимает массив и необязательный аргумент «десятичные числа», который по умолчанию равен нулю, если не указан. Функция возвращает новый массив с округленными значениями, не изменяя исходный массив.

Содержание

Синтаксис

Основной синтаксис функции np.round() следующий:

numpy.round(arr, decimals=0, out=None)

Параметры

Здесь:

Имя Описание
arr Это входной массив Python, который мы хотим округлить.
десятичные дроби Целое число, определяющее количество десятичных знаков, до которых округляются значения. Значение по умолчанию — 0.
out Это необязательный параметр. Если это предусмотрено, это должен быть массив Python той же формы, что и arr. Округленные значения будут помещены в этот массив.

Возвращаемое значение

Функция np.round() в Python возвращает массив той же формы, что и входной массив (arr), содержащий округленные значения. Если используется параметр out, возвратом является ссылка на этот массив.

Варианты использования

Давайте посмотрим несколько примеров, демонстрирующих функцию np.round() в Python.

1. Как округлить

Здесь мы округляем элементы массива NumPy, представляющие различные измерения, до двух десятичных знаков в Python.

import numpy as np

rainfall_data = np.array([41.5678, 15.1234, 36.5647])
rounded_rainfall = np.round(rainfall_data, 2)
print(rounded_rainfall)

Выход:

[41.57 15.12 36.56]

После реализации кода в редакторе Pycharm снимок экрана указан ниже.

Как округлить 

2. NumPy округляет до значимого 0

Чтобы скорректировать набор чисел с плавающей запятой до ближайшего целого числа с помощью функции np.round() в Python.

import numpy as np

population_data = np.array([1.5678, 2.1234, 3.5647])
rounded_population = np.round(population_data)
print(rounded_population)

Выход:

[2. 2. 4.]

Ниже приведен скриншот после реализации кода в редакторе Pycharm.

NumPy округляет до значимого 0

3. round() с параметром out

Позвольте мне продемонстрировать эффективную обработку данных путем округления чисел и сохранения их непосредственно в заранее выделенном массиве в Python, используя параметр out в функции NumPy round().

import numpy as np

stock_prices = np.array([123.5678, 234.1234, 345.5647])
rounded_prices = np.empty(stock_prices.shape)
np.round(stock_prices, 0, out=rounded_prices)
print(rounded_prices)

Выход:

[124. 234. 346.]

После выполнения кода в Pycharm результат можно увидеть на снимке экрана ниже.

округление числа в меньшую сторону в Python

4. Округляет до значащих цифр

Давайте создадим специальную функцию Python с np.round() для округления определенного числа до определенного количества значащих цифр.

import numpy as np
def round_to_significant_figures(num, sig_figs):
    if num != 0:
        order_of_magnitude = np.floor(np.log10(np.abs(num)))
        scale_factor = 10**(order_of_magnitude -(sig_figs - 1))
        return np.round(num / scale_factor) * scale_factor
    else:
        return 0

bridge_length = 1234.5678
rounded_length = round_to_significant_figures(bridge_length, 3)
print(rounded_length)

Выход:

1230.0

Скриншот после реализации кода в редакторе Pycharm указан ниже.

Округляет до значащих цифр

5. Округляет значащие цифры

Здесь мы создадим специальную функцию для округления другого числа до точного количества значащих цифр в Python.

import numpy as np
def round_to_significant_figures(num, sig_figs):
    if num != 0:
        order_of_magnitude = np.floor(np.log10(np.abs(num)))
        scale_factor = 10**(order_of_magnitude -(sig_figs - 1))
        return np.round(num / scale_factor) * scale_factor
    else:
        return 0

concentration = 0.012345
rounded_concentration = round_to_significant_figures(concentration, 4)
print(rounded_concentration)

Выход:

0.01234

Ниже приведен скриншот после реализации кода в редакторе Pycharm.

Округляет значащие цифры

6. Для больших массивов

Давайте воспользуемся np.round для ежегодного расчета численности населения мира, округленной до ближайшего миллиона (6 нулей). Дайте результату (массиву из 66 чисел) имя Population_rounded. Ваш код должен быть очень коротким.

import numpy as np

world_population = np.array([2558000000, 2595000000, 2637000000, 2682000000, 2730000000, 2782000000, 2835000000, 2891000000, 2948000000, 3001000000, 3043000000, 3084000000, 3140000000, 3210000000, 3281000000, 3350000000, 3421000000, 3490000000, 3562000000, 3637000000, 3713000000, 3790000000, 3867000000, 3942000000, 4017000000, 4089000000, 4160000000, 4232000000, 4304000000, 4379000000, 4451000000, 4534000000, 4615000000, 4696000000, 4775000000, 4856000000, 4941000000, 5027000000, 5115000000, 5201000000, 5289000000, 5372000000, 5456000000, 5538000000, 5619000000, 5699000000, 5779000000, 5858000000, 5935000000, 6012000000, 6089000000, 6165000000, 6242000000, 6319000000, 6396000000, 6473000000, 6551000000, 6630000000, 6709000000, 6788000000, 6866000000, 6944000000, 7022000000, 7101000000, 7179000000, 7256000000])

population_rounded = np.round(world_population / 1e6) * 1e6
print(population_rounded)

Выход:

[2.558e+09 2.595e+09 2.637e+09 2.682e+09 2.730e+09 2.782e+09 2.835e+09
 2.891e+09 2.948e+09 3.001e+09 3.043e+09 3.084e+09 3.140e+09 3.210e+09
 3.281e+09 3.350e+09 3.421e+09 3.490e+09 3.562e+09 3.637e+09 3.713e+09
 3.790e+09 3.867e+09 3.942e+09 4.017e+09 4.089e+09 4.160e+09 4.232e+09
 4.304e+09 4.379e+09 4.451e+09 4.534e+09 4.615e+09 4.696e+09 4.775e+09
 4.856e+09 4.941e+09 5.027e+09 5.115e+09 5.201e+09 5.289e+09 5.372e+09
 5.456e+09 5.538e+09 5.619e+09 5.699e+09 5.779e+09 5.858e+09 5.935e+09
 6.012e+09 6.089e+09 6.165e+09 6.242e+09 6.319e+09 6.396e+09 6.473e+09
 6.551e+09 6.630e+09 6.709e+09 6.788e+09 6.866e+09 6.944e+09 7.022e+09
 7.101e+09 7.179e+09 7.256e+09]

После выполнения кода в Pycharm результат можно увидеть на снимке экрана ниже.

Для больших массивов

Добавить комментарий