Kas yra np.where Python kalboje?
Python kalboje galite naudoti funkciją np.where() dirbti su NumPy masyvais. Jos vektoriškai apdorojamos operacijos yra efektyvesnės nei ciklų pagrindu veikiančios metodikos.
Ką daro np.where?
Python funkcija np.where() yra galingas NumPy bibliotekos metodas, naudojamas elementams iš masyvo atrinkti. Ji identifikuoja ir išskiria elementus, kurie atitinka tam tikrą sąlygą, ir tada grąžina indeksus arba vertes, atitinkančias tą sąlygą.
Ši funkcija naudojama įvairiose srityse, pavyzdžiui, duomenų apdorojime, moksliniuose skaičiavimuose, mašininio mokymosi ir duomenų analizės srityse. Duomenų tvarkymo srityje np.where() leidžia filtruoti duomenis ir pakeisti masyvų reikšmes.
Kokia yra np.where sintaksė Python kalboje?
Funkcija np.where() priima NumPy tipo masyvą, sudarytą, pavyzdžiui, iš sveikųjų skaičių arba Būlio verčių. Jos sintaksė atrodo taip:
import numpy as np
np.where(condition[, x, y])pythoncondition: Tai yra sąlyga, kuri bus taikoma masyvui, siekiant nustatyti, kurie elementai bus atrinkti.xiry(neprivaloma): Jei nurodysitexiry, sąlygai įvykus bus grąžintosxreikšmės. Kitaip bus grąžintosyreikšmės. Jei nenurodysitexiry,np.where()grąžins indeksus, kurie atitinka sąlygą.
Po vykdymo np.where() grąžina naują NumPy masyvą. Naujas masyvas yra filtravimo arba elementų atrinkimo iš pradinio masyvo pagal sąlygą rezultatas.
Pavyzdžiai, kaip naudoti np.where
np.where() metodas yra universalus įrankis, skirtas sąlygų taikymui masyvams, ir yra labai naudingas duomenų tvarkymui. Toliau pateiksime keletą pavyzdžių, kaip jį naudoti.
Pakeisti elementus NumPy masyve
NumPy funkcija np.where() leidžia pakeisti masyvo elementus pagal sąlygą. Prieš pradėdami, galite pakeisti Python sąrašus į masyvus naudodami np.array().
import numpy as np
arr = np.array([1, 2, 3, 4, 5])pythonDabar, kai turime masyvą, norime apibrėžti sąlygą, pagal kurią būtų identifikuojami elementai, didesni nei 3. Tai galime padaryti naudodami sąlygą, kad elementai, didesni nei 3, yra True, o kiti – klaidingi:
condition = arr > 3pythonToliau naudosime np.where() ir įvesime šią sąlygą. Taip pat nustatysime, kad sąlygą atitinkančios reikšmės bus pakeistos į -1, o visos kitos reikšmės bus pakeistos į 0.
new_arr = np.where(condition, -1, 0)pythonRezultatas new_arr yra masyvas, kuris buvo modifikuotas pagal sąlygą. Išvestyje reikšmės, didesnės nei 3, pakeistos reikšme -1. Visos kitos reikšmės pakeistos reikšme 0.
print(new_arr)
# Output: [0 0 0 -1 -1]pythonNaudokite np.where su viena sąlyga
Jei naudojate np.where() su viena sąlyga ir be jokių pakeitimų verčių, bus grąžintas indeksų, kuriems sąlyga yra teisinga, rinkinys.
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]),)pythonŠiame pavyzdyje arr yra NumPy masyvas, kuriame yra reikšmės nuo 1 iki 5. condition = arr > 2 sukuria Būlio kaukę, kuri identifikuoja elementus arr, kurie yra didesni nei 2. np.where(condition) vykdomas be pakeitimų reikšmių ir kaip rezultatas grąžina indeksų, kurie atitinka sąlygą arr > 2, tuplą. Rezultatas yra indeksų masyvas, kuriame elementai yra didesni nei 2.
Transliacija su np.where
NumPy programoje transliavimas leidžia atlikti operacijas su skirtingos formos masyvais, jei tenkinamos tam tikros sąlygos. Kai masyvai yra skirtingos formos, NumPy bandys juos padidinti, kad jie būtų suderinami.
Tarkime, kad turime NumPy masyvą arr su forma (3, 3):
import numpy as np
arr = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])pythonIr turime kitą NumPy masyvą row su forma (3,):
row = np.array([10, 11, 12])pythonAbiejų masyvų formos nėra visiškai suderintos, tačiau transliavimas gali būti naudojamas operacijoms tarp jų atlikti. Jei, pavyzdžiui, norėtume pridėti kiekvienos arr eilutės vertes prie row verčių, transliavimas tai padarytų įmanoma.
result = arr + row
print(result)
# Output: [[11 13 15]
[14 16 18]
[17 19 21]]pythonPirmiau pateiktame pavyzdyje vienmatis masyvas row buvo padidintas iki (3, 3) matricos, kad atitiktų arr formą. Tada arr ir row elementai buvo sudėti elementas po elemento.