# Mikä on np.where Pythonissa?

Voit käyttää toimintoa `np.where()` NumPy-taulukoiden käsittelyyn Pythonissa. Sen vektoroidut operaatiot tekevät siitä tehokkaamman kuin silmukkapohjaiset menetelmät.

## Mitä np.where tekee?

Python-funktio `np.where()` on NumPy-kirjaston tehokas menetelmä, jota käytetään elementtien valitsemiseen taulukosta. Se tunnistaa ja poimii elementit, jotka **täyttävät tietyn ehdon**, ja palauttaa sitten kyseistä ehtoa vastaavat indeksit tai arvot.

Tätä funktiota käytetään monilla aloilla, kuten tietojenkäsittelyssä, tieteellisissä laskelmissa, koneoppimisessa ja data-analyysissä. Datan käsittelyn yhteydessä `np.where()` mahdollistaa **datan suodattamisen** ja arvojen korvaamisen taulukoissa.

## Mikä on np.where-funktion syntaksi Pythonissa?

`np.where()` ottaa vastaan **NumPy-tyyppisen taulukon**, joka koostuu esimerkiksi kokonaisluvuista tai boolenaisista arvoista. Sen syntaksi on seuraavanlainen:

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

- `condition`: Tämä on ehto, jota sovelletaan taulukkoon sen määrittämiseksi, mitkä elementit valitaan.
- `x` ja `y` (valinnainen): Jos määrität `x` ja `y`, `x` n arvot palautetaan, kun ehto täyttyy. Muussa tapauksessa palautetaan `y` n arvot. Jos et määritä `x` ja `y`, `np.where()` palauttaa indeksit, jotka täyttävät ehdon.

Suorituksen jälkeen `np.where()` palauttaa **uuden NumPy-taulukon**. Uusi taulukko on tulos alkuperäisen taulukon suodattamisesta tai elementtien valitsemisesta ehdon perusteella.

## Esimerkkejä np.where-funktion käytöstä

`np.where()` menetelmä on monipuolinen työkalu ehtojen soveltamiseen taulukoihin ja erittäin hyödyllinen tietojen käsittelyssä. Seuraavassa tarkastelemme muutamia esimerkkejä sen käytöstä.

### Korvaa elementit NumPy-taulukossa

NumPy:n funktio `np.where()` mahdollistaa taulukon elementtien korvaamisen tietyn ehdon perusteella. Ennen kuin aloitat, voit muuttaa Python-listat taulukoiksi käyttämällä `np.array()`.

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

Nyt kun meillä on taulukko, haluamme määritellä ehdon, jolla tunnistetaan elementit, jotka ovat suurempia kuin 3. Voimme tehdä tämän ehdolla, joka on `True` elementeille, jotka ovat suurempia kuin 3, ja muutoin epätosi:

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

Seuraavaksi käytämme `np.where()` ja syötämme tämän ehdon. Määritämme myös, että ehdon täyttävät arvot korvataan arvolla -1 ja kaikki muut arvot korvataan arvolla 0.

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

Tuloksena oleva `new_arr` sisältää ehdon perusteella muokatun taulukon. Tuloksessa arvot, jotka ovat suurempia kuin 3, korvataan arvolla -1. Kaikki muut arvot korvataan arvolla 0.

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

### Käytä np.where-funktiota yhdellä ehdolla

Jos käytät `np.where()` vain yhdellä ehdolla ja ilman korvaavia arvoja, se palauttaa **indeksien tuple**, joille ehto on totta.

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

Tässä esimerkissä `arr` on NumPy-taulukko, joka sisältää arvot 1–5. `condition = arr > 2` luo boolen maskin, joka tunnistaa elementit `arr` ssa, jotka ovat suurempia kuin 2. `np.where(condition)` suoritetaan ilman korvaavia arvoja, ja tuloksena palautetaan tuple indekseistä, jotka täyttävät ehdon `arr > 2`. Tuloksena on taulukko indekseistä, joiden elementit ovat suurempia kuin 2.

### Lähetys np.where:llä

NumPy-kirjastossa lähetys mahdollistaa eri muotoisten taulukoiden käsittelyn, kunhan tietyt ehdot täyttyvät. Kun taulukot ovat eri muotoisia, NumPy yrittää suurentaa niitä, jotta ne ovat yhteensopivia.

Oletetaan, että meillä on NumPy-taulukko `arr`, jonka muoto on (3, 3):

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

Ja meillä on toinen NumPy-taulukko `row`, jonka muoto on (3,):

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

Kahden taulukon muodot eivät täysin vastaa toisiaan, mutta lähetystoimintoa voidaan käyttää niiden välisten operaatioiden mahdollistamiseen. Jos esimerkiksi haluaisimme lisätä kunkin rivin arvot `arr` arvoihin `row`, lähetystoiminto mahdollistaisi sen.

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

Yllä olevassa esimerkissä yksiulotteinen taulukko `row` laajennettiin (3, 3) matriisiksi vastaamaan muodon `arr` muotoa. Sitten elementit `arr` ja `row` laskettiin yhteen elementti elementiltä.


This is a markdown version of: [https://www.ionos.com/fi-fi/digitalguide/verkkosivustot/verkkosivujen-kehittaeminen/python-npwhere-menetelmae/](https://www.ionos.com/fi-fi/digitalguide/verkkosivustot/verkkosivujen-kehittaeminen/python-npwhere-menetelmae/) for AI/LLM consumption.