Kas ir np.where Python valodā?
Jūs varat izmantot funkciju np.where(), lai strādātu ar NumPy masīviem Python. Tās vektorizētās operācijas padara to efektīvāku nekā cilpu bāzētās metodes.
Ko dara np.where?
Python funkcija np.where() ir jaudīga metode no NumPy bibliotēkas, ko izmanto, lai atlasītu elementus no masīva. Tā identificē un izgūst elementus, kas atbilst noteiktam nosacījumam, un pēc tam atgriež indeksus vai vērtības, kas atbilst šim nosacījumam.
Šī funkcija tiek izmantota dažādās jomās, piemēram, datu apstrādē, zinātniskajos aprēķinos, mašīnmācībā un datu analīzē. Datu apstrādē np.where() ļauj filtrēt datus un aizstāt vērtības masīvos.
Kāda ir np.where sintakse Python valodā?
Funkcija np.where() pieņem NumPy tipa masīvu, kas sastāv, piemēram, no veseliem skaitļiem vai Boole’a vērtībām. Tās sintakse izskatās šādi:
import numpy as np
np.where(condition[, x, y])pythoncondition: Šis ir nosacījums, kas tiks piemērots masīvam, lai noteiktu, kuri elementi tiks atlasīti.xuny(pēc izvēles): ja norādātxuny, tad, ja nosacījums ir izpildīts, tiks atgrieztas vērtības nox. Pretējā gadījumā tiks atgrieztas vērtības noy. Ja nenorādātxuny,np.where()atgriezīs indeksus, kas atbilst nosacījumam.
Pēc izpildes np.where() atgriež jaunu NumPy masīvu. Jaunais masīvs ir rezultāts, kas iegūts, filtrējot vai atlasot elementus no sākotnējā masīva, pamatojoties uz nosacījumu.
Piemēri, kā lietot np.where
np.where() metode ir universāls rīks, lai piemērotu nosacījumus masīviem, un tas ir ļoti noderīgs datu apstrādei. Turpinājumā apskatīsim dažus piemērus, kā to izmantot.
Aizstāt elementus NumPy masīvā
NumPy funkcija np.where() ļauj aizstāt masīva elementus, pamatojoties uz nosacījumu. Pirms sākt darbu, varat pārveidot Python sarakstus masīvos, izmantojot np.array().
import numpy as np
arr = np.array([1, 2, 3, 4, 5])pythonTagad, kad mums ir masīvs, mēs vēlamies definēt nosacījumu, lai identificētu elementus, kas ir lielāki par 3. To var izdarīt ar nosacījumu, kas ir True elementiem, kuri ir lielāki par 3, un citos gadījumos ir nepatiesa:
condition = arr > 3pythonTālāk izmantosim np.where() un ievadīsim šo nosacījumu. Noteiksim arī, ka vērtības, kas atbilst nosacījumam, tiks aizstātas ar -1, bet visas pārējās vērtības tiks aizstātas ar 0.
new_arr = np.where(condition, -1, 0)pythonRezultāts new_arr satur masīvu, kas ir modificēts, pamatojoties uz nosacījumu. Izvades rezultātā vērtības, kas ir lielākas par 3, tiek aizstātas ar -1. Visas pārējās vērtības tiek aizstātas ar 0.
print(new_arr)
# Output: [0 0 0 -1 -1]pythonIzmantojiet np.where ar vienu nosacījumu
Ja izmantojat np.where() ar vienu nosacījumu un bez aizstājējvērtībām, tas atgriezīs indeksu kopu, kam nosacījums ir patiesība.
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Šajā piemērā arr ir NumPy masīvs, kas satur vērtības no 1 līdz 5. condition = arr > 2 izveido Boole masku, kas identificē elementus arr, kuri ir lielāki par 2. np.where(condition) tiek izpildīts bez aizstājējvērtībām un rezultātā atgriež indeksu kopu, kas atbilst nosacījumam arr > 2. Izvade ir indeksu masīvs, kurā elementi ir lielāki par 2.
Pārraide ar np.where
NumPy programmā apraide ļauj veikt darbības ar dažādas formas masīviem, ja ir izpildīti noteikti nosacījumi. Ja masīviem ir atšķirīgas formas, NumPy mēģinās tos palielināt, lai tie būtu savietojami.
Teiksim, ka mums ir NumPy masīvs arr ar formu (3, 3):
import numpy as np
arr = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])pythonUn mums ir vēl viens NumPy masīvs row ar formu (3,):
row = np.array([10, 11, 12])pythonAbos masīvos formas nav pilnīgi identiskas, bet, izmantojot apraidi, var veikt operācijas starp tām. Ja, piemēram, mēs vēlētos pievienot vērtības no katras arr rindas vērtībām row rindā, apraide to padarītu iespējamu.
result = arr + row
print(result)
# Output: [[11 13 15]
[14 16 18]
[17 19 21]]pythonIepriekš minētajā piemērā vienvirziena masīvs row tika paplašināts līdz (3, 3) matricai, lai atbilstu arr formai. Pēc tam arr un row elementi tika summēti pa elementiem.