Как группировать переменные в python с помощью numpy.digitize()
Часто вам может быть интересно поместить значения переменной в «корзины» в Python.
К счастью, это легко сделать с помощью функции numpy.digitize() , которая использует следующий синтаксис:
numpy.digitize(x, bins, right=False)
Золото:
- x: массив для группировки.
- бункеры: массив бункеров.
- справа: указывает, включают ли интервалы правый или левый край интервала. По умолчанию интервал не включает правый край.
В этом уроке показано несколько примеров практического использования этой функции.
Пример 1: Поместите все значения в две корзины
Следующий код показывает, как разместить значения массива в два бункера:
- 0 , если х < 20
- 1 , если х ≥ 20
import numpy as np #create data data = [2, 4, 4, 7, 12, 14, 19, 20, 24, 31, 34] #place values into bins n.p. digitize (data, bins=[20]) array([0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1])
Пример 2: Разместите все значения в три ячейки
Следующий код показывает, как разместить значения массива в три ячейки:
- 0 , если х < 10
- 1 , если 10 ≤ x < 20
- 2 , если х ≥ 20
import numpy as np #create data data = [2, 4, 4, 7, 12, 14, 20, 22, 24, 31, 34] #place values into bins n.p. digitize (data, bins=[10, 20]) array([0, 0, 0, 0, 1, 1, 2, 2, 2, 2, 2])
Обратите внимание: если мы укажем right= True , то значения будут помещены в следующие ячейки:
- 0 , если х ≤ 10
- 1 , если 10 < x ≤ 20
- 2 , если х > 20
Каждый интервал будет включать правый край интервала. Вот как это выглядит:
import numpy as np #createdata data = [2, 4, 4, 7, 12, 14, 20, 22, 24, 31, 34] #place values into bins n.p. digitize (data, bins=[10, 20], right= True ) array([0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 2])
Пример 3: Разместите все значения в четыре ячейки
Следующий код показывает, как разместить значения массива в три ячейки:
- 0 , если х < 10
- 1 , если 10 ≤ x < 20
- 2 , если 20 ≤ x < 30
- 3 , если х ≥ 30
import numpy as np #createdata data = [2, 4, 4, 7, 12, 14, 20, 22, 24, 31, 34] #place values into bins n.p. digitize (data, bins=[10, 20, 30]) array([0, 0, 0, 0, 1, 1, 2, 2, 2, 3, 3])
Пример 4: Подсчитайте частоту каждого интервала
Еще одна полезная функция NumPy, дополняющая функцию numpy.digitize(), — это функция numpy.bincount() , которая подсчитывает частоты каждого интервала.
Следующий код показывает, как разместить значения массива в три группы, а затем посчитать частоту каждой группы:
import numpy as np #createdata data = [2, 4, 4, 7, 12, 14, 20, 22, 24, 31, 34] #place values into bins bin_data = np. digitize (data, bins=[10, 20]) #view binned data bin_data array([0, 0, 0, 0, 1, 1, 2, 2, 2, 2, 2]) #count frequency of each bin n.p. bincount (bin_data) array([4, 2, 5])
Вывод говорит нам, что:
- Ячейка «0» содержит 4 значения данных.
- Ячейка «1» содержит 2 значения данных.
- Бин «2» содержит 5 значений данных.
Дополнительные руководства по Python можно найти здесь .