Jūs varat izmantot funkciju np.where(), lai strādātu ar NumPy masīviem Python. Tās vek­to­ri­zē­tās ope­rā­ci­jas padara to efek­tī­vā­ku nekā cilpu bāzētās metodes.

Ko dara np.where?

Python funkcija np.where() ir jaudīga metode no NumPy bib­lio­tē­kas, ko izmanto, lai atlasītu elementus no masīva. Tā iden­ti­fi­cē un izgūst elementus, kas atbilst noteiktam no­sa­cī­ju­mam, un pēc tam atgriež indeksus vai vērtības, kas atbilst šim no­sa­cī­ju­mam.

Šī funkcija tiek izmantota dažādās jomās, piemēram, datu apstrādē, zi­nāt­nis­ka­jos aprēķinos, ma­šīn­mā­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])
python
  • condition: Šis ir no­sa­cī­jums, kas tiks piemērots masīvam, lai noteiktu, kuri elementi tiks atlasīti.
  • x un y (pēc izvēles): ja norādāt x un y, tad, ja no­sa­cī­jums ir izpildīts, tiks at­griez­tas vērtības no x. Pretējā gadījumā tiks at­griez­tas vērtības no y. Ja nenorādāt x un y, np.where() atgriezīs indeksus, kas atbilst no­sa­cī­ju­mam.

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, pa­ma­to­jo­ties uz no­sa­cī­ju­mu.

Piemēri, kā lietot np.where

np.where() metode ir uni­ver­sāls rīks, lai piemērotu no­sa­cī­ju­mus masīviem, un tas ir ļoti noderīgs datu apstrādei. Tur­pi­nā­ju­mā ap­ska­tī­sim dažus piemērus, kā to izmantot.

Aizstāt elementus NumPy masīvā

NumPy funkcija np.where() ļauj aizstāt masīva elementus, pa­ma­to­jo­ties uz no­sa­cī­ju­mu. Pirms sākt darbu, varat pārveidot Python sarakstus masīvos, iz­man­to­jot np.array().

import numpy as np
arr = np.array([1, 2, 3, 4, 5])
python

Tagad, kad mums ir masīvs, mēs vēlamies definēt no­sa­cī­ju­mu, lai iden­ti­fi­cē­tu elementus, kas ir lielāki par 3. To var izdarīt ar no­sa­cī­ju­mu, kas ir True ele­men­tiem, kuri ir lielāki par 3, un citos gadījumos ir nepatiesa:

condition = arr > 3
python

Tālāk iz­man­to­sim np.where() un ievadīsim šo no­sa­cī­ju­mu. Noteiksim arī, ka vērtības, kas atbilst no­sa­cī­ju­mam, 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)
python

Rezultāts new_arr satur masīvu, kas ir mo­di­fi­cēts, pa­ma­to­jo­ties uz no­sa­cī­ju­mu. 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]
python

Iz­man­to­jiet np.where ar vienu no­sa­cī­ju­mu

Ja iz­man­to­jat np.where() ar vienu no­sa­cī­ju­mu un bez aiz­stā­jējvēr­tī­bām, tas atgriezīs indeksu kopu, kam no­sa­cī­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 iden­ti­fi­cē elementus arr, kuri ir lielāki par 2. np.where(condition) tiek izpildīts bez aiz­stā­jējvēr­tī­bām un rezultātā atgriež indeksu kopu, kas atbilst no­sa­cī­ju­mam 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 no­sa­cī­ju­mi. Ja masīviem ir at­šķi­rī­gas formas, NumPy mēģinās tos pa­lie­li­nāt, lai tie būtu sa­vie­to­ja­mi.

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]])
python

Un mums ir vēl viens NumPy masīvs row ar formu (3,):

row = np.array([10, 11, 12])
python

Abos masīvos formas nav pilnīgi iden­tis­kas, bet, iz­man­to­jot apraidi, var veikt ope­rā­ci­jas 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]]
python

Iepriekš minētajā piemērā vien­vir­zie­na masīvs row tika pa­pla­ši­nāts līdz (3, 3) matricai, lai atbilstu arr formai. Pēc tam arr un row elementi tika summēti pa ele­men­tiem.

Go to Main Menu