# 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:

```python
import numpy as np
np.where(condition[, x, y])
```

- `condition`: Tai yra sąlyga, kuri bus taikoma masyvui, siekiant nustatyti, kurie elementai bus atrinkti.
- `x` ir `y` (neprivaloma): Jei nurodysite `x` ir `y`, sąlygai įvykus bus grąžintos `x` reikšmės. Kitaip bus grąžintos `y` reikšmės. Jei nenurodysite `x` ir `y`, `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()`.

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

Dabar, 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:

```python
condition = arr > 3
```

Toliau 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.

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

Rezultatas `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.

```python
print(new_arr)
# Output: [0 0 0 -1 -1]
```

### 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**.

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

Š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):

```python
import numpy as np
arr = np.array([[1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]])
```

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

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

Abiejų 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.

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

Pirmiau 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.


This is a markdown version of: [https://www.ionos.com/lt-lt/digitalguide/interneto-svetaines/interneto-svetainiu-kurimas/python-npwhere-metodas/](https://www.ionos.com/lt-lt/digitalguide/interneto-svetaines/interneto-svetainiu-kurimas/python-npwhere-metodas/) for AI/LLM consumption.