Variabelen groeperen in python met numpy.digitize()
Vaak ben je misschien geïnteresseerd in het plaatsen van de waarden van een variabele in „bins“ in Python.
Gelukkig is dit eenvoudig te doen met de functie numpy.digitize() , die de volgende syntaxis gebruikt:
numpy.digitize(x, bakken, rechts=False)
Goud:
- x: array om te groeperen.
- bakken: reeks bakken.
- rechts: geeft aan of de intervallen de rechter- of linkerrand van de bak omvatten. Standaard omvat het interval niet de rechterrand.
Deze tutorial toont verschillende voorbeelden van praktisch gebruik van deze functie.
Voorbeeld 1: Plaats alle waarden in twee bakken
De volgende code laat zien hoe je de waarden van een array in twee bakken plaatst:
- 0 als x < 20
- 1 als 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])
Voorbeeld 2: Plaats alle waarden in drie bakken
De volgende code laat zien hoe je de waarden van een array in drie bakken plaatst:
- 0 als x < 10
- 1 als 10 ≤ x < 20
- 2 indien 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])
Houd er rekening mee dat als we right= True specificeren, de waarden in de volgende bakken worden geplaatst:
- 0 als x ≤ 10
- 1 als 10 < x ≤ 20
- 2 als x > 20
Elk interval omvat de rechterrand van de bak. Dit is hoe het eruit ziet:
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])
Voorbeeld 3: Plaats alle waarden in vier bakken
De volgende code laat zien hoe je de waarden van een array in drie bakken plaatst:
- 0 als x < 10
- 1 als 10 ≤ x < 20
- 2 als 20 ≤ x < 30
- 3 indien 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])
Voorbeeld 4: Tel de frequentie van elke bak
Een andere nuttige NumPy-functie die een aanvulling vormt op de numpy.digitize()-functie is de numpy.bincount()- functie, die de frequenties van elke bin telt.
De volgende code laat zien hoe je de waarden van een array in drie groepen plaatst en vervolgens de frequentie van elke groep telt:
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])
De uitvoer vertelt ons dat:
- Bin “0” bevat 4 gegevenswaarden.
- Bin “1” bevat 2 gegevenswaarden.
- Bin “2” bevat 5 gegevenswaarden.
Vind hier meer Python-tutorials.