Python kalboje galite naudoti funkciją np.where() dirbti su NumPy masyvais. Jos vek­to­riš­kai ap­do­ro­ja­mos ope­ra­ci­jos yra efek­ty­ves­nės nei ciklų pagrindu vei­kian­čios metodikos.

Ką daro np.where?

Python funkcija np.where() yra galingas NumPy bi­b­lio­te­kos metodas, nau­do­ja­mas ele­men­tams iš masyvo atrinkti. Ji iden­ti­fi­kuo­ja ir išskiria elementus, kurie atitinka tam tikrą sąlygą, ir tada grąžina indeksus arba vertes, ati­tin­kan­čias tą sąlygą.

Ši funkcija naudojama įvairiose srityse, pa­vyz­džiui, duomenų ap­do­ro­ji­me, moks­li­niuo­se skai­čia­vi­muo­se, 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ą, pa­vyz­džiui, iš sveikųjų skaičių arba Būlio verčių. Jos sintaksė atrodo taip:

import numpy as np
np.where(condition[, x, y])
python
  • condition: Tai yra sąlyga, kuri bus taikoma masyvui, siekiant nustatyti, kurie elementai bus atrinkti.
  • x ir y (ne­pri­va­lo­ma): Jei nu­ro­dy­si­te x ir y, sąlygai įvykus bus grąžintos x reikšmės. Kitaip bus grąžintos y reikšmės. Jei ne­nu­ro­dy­si­te x ir y, np.where() grąžins indeksus, kurie atitinka sąlygą.

Po vykdymo np.where() grąžina naują NumPy masyvą. Naujas masyvas yra fil­t­ra­vi­mo arba elementų atrinkimo iš pradinio masyvo pagal sąlygą re­zul­ta­tas.

Pa­vyz­džiai, kaip naudoti np.where

np.where() metodas yra uni­ver­sa­lus įrankis, skirtas sąlygų taikymui masyvams, ir yra labai naudingas duomenų tvarkymui. Toliau pa­teik­si­me 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])
python

Dabar, kai turime masyvą, norime apibrėžti sąlygą, pagal kurią būtų iden­ti­fi­kuo­ja­mi elementai, didesni nei 3. Tai galime padaryti naudodami sąlygą, kad elementai, didesni nei 3, yra True, o kiti – klaidingi:

condition = arr > 3
python

Toliau naudosime np.where() ir įvesime šią sąlygą. Taip pat nu­sta­ty­si­me, kad sąlygą ati­tin­kan­čios reikšmės bus pakeistos į -1, o visos kitos reikšmės bus pakeistos į 0.

new_arr = np.where(condition, -1, 0)
python

Re­zul­ta­tas new_arr yra masyvas, kuris buvo mo­di­fi­kuo­tas 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]
python

Naudokite 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 iden­ti­fi­kuo­ja elementus arr, kurie yra didesni nei 2. np.where(condition) vykdomas be pakeitimų reikšmių ir kaip re­zul­ta­tas grąžina indeksų, kurie atitinka sąlygą arr > 2, tuplą. Re­zul­ta­tas yra indeksų masyvas, kuriame elementai yra didesni nei 2.

Trans­lia­ci­ja su np.where

NumPy prog­ra­mo­je trans­lia­vi­mas leidžia atlikti ope­ra­ci­jas su skir­tin­gos formos masyvais, jei ten­ki­na­mos tam tikros sąlygos. Kai masyvai yra skir­tin­gos formos, NumPy bandys juos padidinti, kad jie būtų su­de­ri­na­mi.

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

Ir turime kitą NumPy masyvą row su forma (3,):

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

Abiejų masyvų formos nėra visiškai su­de­rin­tos, tačiau trans­lia­vi­mas gali būti nau­do­ja­mas ope­ra­ci­joms tarp jų atlikti. Jei, pa­vyz­džiui, norėtume pridėti kiek­vie­nos arr eilutės vertes prie row verčių, trans­lia­vi­mas tai padarytų įmanoma.

result = arr + row
print(result)
# Output: [[11 13 15]
    [14 16 18]
    [17 19 21]]
python

Pirmiau pa­teik­ta­me pavyzdyje vienmatis masyvas row buvo pa­di­din­tas iki (3, 3) matricos, kad atitiktų arr formą. Tada arr ir row elementai buvo sudėti elementas po elemento.

Go to Main Menu