Kaj je np.where v Pythonu?
Za delo z NumPy-jevimi matrikami v Pythonu lahko uporabite funkcijo np.where(). Njene vektorske operacije so učinkovitejše od metod, ki temeljijo na zankah.
Kaj počne np.where?
Pythonova funkcija np.where() je zmogljiva metoda iz knjižnice NumPy, ki se uporablja za izbiranje elementov iz niza. Prepozna in izloči elemente, ki izpolnjujejo določen pogoj, nato pa vrne indekse ali vrednosti, ki ustrezajo temu pogoju.
Funkcija se uporablja na različnih področjih, kot so obdelava podatkov, znanstveni izračuni, strojno učenje in analiza podatkov. Pri obdelavi podatkov np.where() omogoča filtriranje podatkov in zamenjavo vrednosti v nizih.
Kakšna je sintaksa np.where v Pythonu?
Funkcija np.where() sprejme niz, podoben NumPy, ki je sestavljen na primer iz celih števil ali logičnih vrednosti. Njena sintaksa je naslednja:
import numpy as np
np.where(condition[, x, y])pythoncondition: To je pogoj, ki se bo uporabil za niz, da se določi, kateri elementi bodo izbrani.xiny(neobvezno): Če določitexiny, se bodo vrednosti izxvrnile, ko bo pogoj izpolnjen. V nasprotnem primeru se vrnejo vrednosti izy. Če ne določitexiny, bonp.where()vrnil indekse, ki izpolnjujejo pogoj.
Po izvedbi np.where() vrne novi NumPy niz. Novi niz je rezultat filtriranja ali izbire elementov iz izvirnega niza na podlagi pogoja.
Primeri uporabe np.where
Metoda np.where() je vsestransko orodje za uporabo pogojev v nizih in je zelo uporabna za manipulacijo podatkov. V nadaljevanju si bomo ogledali nekaj primerov, kako jo uporabiti.
Zamenjajte elemente v NumPy nizu
Funkcija np.where() v NumPy omogoča zamenjavo elementov v nizu na podlagi pogoja. Preden začnete, lahko sezname Python spremenite v nize z uporabo np.array().
import numpy as np
arr = np.array([1, 2, 3, 4, 5])pythonSedaj, ko imamo naš niz, želimo definirati pogoj za identifikacijo elementov, ki so večji od 3. To lahko storimo s pogojem, ki je True za elemente, ki so večji od 3, in sicer v nasprotnem primeru:
condition = arr > 3pythonNato bomo uporabili np.where() in vnesli ta pogoj. Določili bomo tudi, da bodo vrednosti, ki izpolnjujejo pogoj, nadomeščene z -1, vse druge vrednosti pa z 0.
new_arr = np.where(condition, -1, 0)pythonRezultat, new_arr, vsebuje niz, ki je bil spremenjen na podlagi pogoja. V izhodu so vrednosti, ki so večje od 3, nadomeščene z -1. Vse druge vrednosti so nadomeščene z 0.
print(new_arr)
# Output: [0 0 0 -1 -1]pythonUporabite np.where z enim pogojem
Če uporabite np.where() z enim samim pogojem in brez nadomestnih vrednosti, bo vrnil niz indeksov, za katere je pogoj resničen.
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
condition = arr > 2
result = np.where(condition)
print(result)
# Output: (array([2, 3, 4]),)pythonV tem primeru je arr NumPy niz, ki vsebuje vrednosti od 1 do 5. condition = arr > 2 ustvari booleansko masko, ki identificira elemente v arr, ki so večji od 2. np.where(condition) se izvede brez nadomestnih vrednosti in kot rezultat vrne niz indeksov, ki izpolnjujejo pogoj arr > 2. Izhod je niz indeksov, v katerem so elementi večji od 2.
Oddaja z np.where
V NumPyju oddajanje omogoča izvajanje operacij z različno oblikovanimi nizi, če so izpolnjeni določeni pogoji. Kadar imajo nizi različne oblike, bo NumPy poskušal jih povečati, da bodo združljivi.
Recimo, da imamo NumPy matriko arr v obliki (3, 3):
import numpy as np
arr = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])pythonIn imamo še en NumPy niz row v obliki (3,):
row = np.array([10, 11, 12])pythonOblike obeh nizov se ne ujemajo povsem, vendar je mogoče z oddajanjem omogočiti operacije med njima. Če bi na primer želeli sešteti vrednosti iz vsake vrstice arr z vrednostmi v row, bi to omogočilo oddajanje.
result = arr + row
print(result)
# Output: [[11 13 15]
[14 16 18]
[17 19 21]]pythonV zgornjem primeru je bil enodimenzionalni niz row povečan v matriko (3, 3), da se je ujemal z obliko arr. Nato so bili elementi arr in row sešteti element za elementom.