Функция digitize
Функция digitize возвращает массив индексов бинов для каждого элемента входного массива.
Первым параметром передаётся массив значений, которые нужно классифицировать.
Вторым параметром передаётся массив границ бинов (должен быть монотонно возрастающим или убывающим).
Третьим параметром можно задать порядок бинов: по умолчанию False, что соответствует бину с индексом i для значения из интервала (bins[i-1], bins[i]].
Если передать True, то интервал будет [bins[i-1], bins[i]).
Синтаксис
np.digitize(x, bins, right=False)
Пример
Давайте разобьём массив чисел на три бина с границами 0, 5 и 10:
import numpy as np
arr = np.array([1, 3, 5, 7, 9, 11])
bins = np.array([0, 5, 10])
res = np.digitize(arr, bins)
print(res)
Результат выполнения кода:
[1 1 2 2 2 3]
Пример
Используем параметр right для изменения правила включения границ:
import numpy as np
arr = np.array([0, 5, 10])
bins = np.array([0, 5, 10])
res_left = np.digitize(arr, bins, right=False)
res_right = np.digitize(arr, bins, right=True)
print(res_left)
print(res_right)
Результат выполнения кода:
[1 2 3]
[0 1 2]
Пример
Применим функцию к двумерному массиву для классификации каждой строки:
import numpy as np
arr = np.array([[1, 4], [6, 9], [11, 14]])
bins = np.array([0, 5, 10, 15])
res = np.digitize(arr, bins)
print(res)
Результат выполнения кода:
[[1 1]
[2 2]
[3 3]]
Пример
Используем убывающие границы бинов. Для этого нужно передать массив границ в порядке убывания:
import numpy as np
arr = np.array([1, 3, 5, 7, 9])
bins = np.array([10, 5, 0])
res = np.digitize(arr, bins)
print(res)
Результат выполнения кода:
[3 2 2 1 1]
Смотрите также
-
функцию
histogram,
которая вычисляет гистограмму для набора данных -
функцию
bincount,
которая подсчитывает количество вхождений каждого значения в массиве -
функцию
percentile,
которая вычисляет процентили для набора данных -
функцию
quantile,
которая вычисляет квантили для набора данных