Функция divmod
Функция divmod возвращает кортеж из двух массивов: частное и остаток от деления элементов первого массива на элементы второго. Это эквивалентно одновременному выполнению операций floor_divide и remainder. Функция работает поэлементно и поддерживает вещание (broadcasting). Для целых чисел частное округляется вниз, для вещественных - также вниз с учетом знака.
Синтаксис
np.divmod(x1, x2, out=None, where=True)
Параметры:
-
x1- первый массив или число (делимое); -
x2- второй массив или число (делитель); -
out- необязательный кортеж для сохранения результата; -
where- условие для вычислений.
Пример с целыми числами
Рассмотрим базовое применение функции для целочисленных массивов:
import numpy as np
arr1 = np.array([10, 20, 30, 40, 50])
arr2 = np.array([3, 4, 6, 7, 9])
quotient, remainder = np.divmod(arr1, arr2)
print("quotient:", quotient)
print("remainder:", remainder)
Результат выполнения кода:
quotient: [3 5 5 5 5]
remainder: [1 0 0 5 5]
Пример с вещественными числами
Функция работает и с числами с плавающей точкой:
import numpy as np
arr1 = np.array([7.5, 14.2, 21.8])
arr2 = np.array([2.5, 3.1, 4.2])
quotient, remainder = np.divmod(arr1, arr2)
print("quotient:", quotient)
print("remainder:", remainder)
Результат выполнения кода:
quotient: [3. 4. 5.]
remainder: [0. 1.8 0.8]
Пример с отрицательными числами
Важно помнить, что частное округляется вниз, что влияет на остаток:
import numpy as np
arr1 = np.array([-10, -20, 30, -40])
arr2 = np.array([3, 6, 4, 7])
quotient, remainder = np.divmod(arr1, arr2)
print("quotient:", quotient)
print("remainder:", remainder)
Результат выполнения кода:
quotient: [-4 -4 7 -6]
remainder: [2 4 2 2]
Пример с вещанием (broadcasting)
Функция поддерживает вещание, что позволяет делить массив на скаляр:
import numpy as np
arr = np.array([15, 27, 33, 48])
divisor = 5
quotient, remainder = np.divmod(arr, divisor)
print("quotient:", quotient)
print("remainder:", remainder)
Результат выполнения кода:
quotient: [3 5 6 9]
remainder: [0 2 3 3]
Смотрите также
-
функцию
floor_divide,
которая возвращает только частное от деления -
функцию
remainder,
которая возвращает только остаток от деления -
функцию
mod,
которая вычисляет остаток от деления (аналог remainder) -
функцию
divide,
которая выполняет обычное деление чисел