Как группировать переменные в 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 можно найти здесь .

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *