Як групувати змінні в python за допомогою numpy.digitize()


Часто вам може бути цікаво помістити значення змінної в «комірки» в Python.

На щастя, це легко зробити за допомогою функції numpy.digitize() , яка використовує такий синтаксис:

numpy.digitize(x, bins, right=False)

золото:

  • x: масив для групування.
  • бункери: масив бункерів.
  • справа: вказує, чи охоплюють інтервали правий чи лівий край кошика. За замовчуванням інтервал не включає правий край.

Цей підручник демонструє кілька прикладів практичного використання цієї функції.

Приклад 1: Помістіть усі значення в два контейнери

У наведеному нижче коді показано, як розмістити значення масиву в два контейнери:

  • 0 , якщо x < 20
  • 1 , якщо x ≥ 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 , якщо x < 10
  • 1 , якщо 10 ≤ x < 20
  • 2 , якщо x ≥ 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 , якщо x ≤ 10
  • 1 , якщо 10 < x ≤ 20
  • 2 , якщо x > 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 , якщо x < 10
  • 1 , якщо 10 ≤ x < 20
  • 2 , якщо 20 ≤ x < 30
  • 3 , якщо x ≥ 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 тут .

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *