Часто вам может быть интересно поместить значения переменной в «корзины» в Python.
К счастью, это легко сделать с помощью функции numpy.digitize() , которая использует следующий синтаксис:
numpy.digitize(x, bins, right=False)
куда:
- x: Массив для объединения.
- bins: Массив бинов.
- справа: указывает, включают ли интервалы правый или левый край ячейки. По умолчанию интервал не включает правый край.
В этом руководстве показано несколько примеров использования этой функции на практике.
Пример 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
np.digitize (data, bins=[20])
array([0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1])
Пример 2. Поместите все значения в три корзины
В следующем коде показано, как поместить значения массива в три ячейки:
- 0 , если х < 10
- 1 , если 10 ≤ х < 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
np.digitize (data, bins=[10, 20])
array([0, 0, 0, 0, 1, 1, 2, 2, 2, 2, 2])
Обратите внимание, что если мы укажем right= True , значения будут помещены в следующие ячейки:
- 0 , если х ≤ 10
- 1 , если 10 < х ≤ 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
np.digitize (data, bins=[10, 20], right= True )
array([0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 2])
Пример 3. Поместите все значения в четыре корзины
В следующем коде показано, как поместить значения массива в три ячейки:
- 0 , если х < 10
- 1 , если 10 ≤ х < 20
- 2 , если 20 ≤ х < 30
- 3 , если х ≥ 30
import numpy as np
#create data
data = [2, 4, 4, 7, 12, 14, 20, 22, 24, 31, 34]
#place values into bins
np.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
#create data
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
np.bincount (bin_data)
array([4, 2, 5])
Вывод говорит нам, что:
- Бин «0» содержит 4 значения данных.
- Бин «1» содержит 2 значения данных.
- Бин «2» содержит 5 значений данных.
Найдите больше руководств по Python здесь .