Voit käyttää toimintoa np.where() NumPy-tau­lu­koi­den kä­sit­te­lyyn Pyt­ho­nis­sa. Sen vek­to­roi­dut ope­raa­tiot tekevät siitä te­hok­kaam­man kuin sil­muk­ka­poh­jai­set me­ne­tel­mät.

Mitä np.where tekee?

Python-funktio np.where() on NumPy-kirjaston tehokas menetelmä, jota käytetään ele­ment­tien va­lit­se­mi­seen tau­lu­kos­ta. 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 tie­to­jen­kä­sit­te­lys­sä, tie­teel­li­sis­sä las­kel­mis­sa, ko­neop­pi­mi­ses­sa ja data-ana­lyy­sis­sä. Datan kä­sit­te­lyn yh­tey­des­sä np.where() mah­dol­lis­taa datan suo­dat­ta­mi­sen ja arvojen kor­vaa­mi­sen tau­lu­kois­sa.

Mikä on np.where-funktion syntaksi Pyt­ho­nis­sa?

np.where() ottaa vastaan NumPy-tyyppisen taulukon, joka koostuu esi­mer­kik­si ko­ko­nais­lu­vuis­ta tai boo­le­nai­sis­ta arvoista. Sen syntaksi on seu­raa­van­lai­nen:

import numpy as np
np.where(condition[, x, y])
python
  • condition: Tämä on ehto, jota so­vel­le­taan tau­luk­koon sen mää­rit­tä­mi­sek­si, mitkä elementit valitaan.
  • x ja y (va­lin­nai­nen): Jos määrität x ja y, x n arvot pa­lau­te­taan, kun ehto täyttyy. Muussa ta­pauk­ses­sa pa­lau­te­taan y n arvot. Jos et määritä x ja y, np.where() palauttaa indeksit, jotka täyttävät ehdon.

Suo­ri­tuk­sen jälkeen np.where() palauttaa uuden NumPy-taulukon. Uusi taulukko on tulos al­ku­pe­räi­sen taulukon suo­dat­ta­mi­ses­ta tai ele­ment­tien va­lit­se­mi­ses­ta ehdon pe­rus­teel­la.

Esi­merk­ke­jä np.where-funktion käytöstä

np.where() menetelmä on mo­ni­puo­li­nen työkalu ehtojen so­vel­ta­mi­seen tau­lu­koi­hin ja erittäin hyö­dyl­li­nen tietojen kä­sit­te­lys­sä. Seu­raa­vas­sa tar­kas­te­lem­me muutamia esi­merk­ke­jä sen käytöstä.

Korvaa elementit NumPy-tau­lu­kos­sa

NumPy:n funktio np.where() mah­dol­lis­taa taulukon ele­ment­tien kor­vaa­mi­sen tietyn ehdon pe­rus­teel­la. Ennen kuin aloitat, voit muuttaa Python-listat tau­lu­koik­si käyt­tä­mäl­lä np.array().

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

Nyt kun meillä on taulukko, haluamme mää­ri­tel­lä ehdon, jolla tun­nis­te­taan elementit, jotka ovat suurempia kuin 3. Voimme tehdä tämän ehdolla, joka on True ele­men­teil­le, jotka ovat suurempia kuin 3, ja muutoin epätosi:

condition = arr > 3
python

Seu­raa­vak­si käytämme np.where() ja syötämme tämän ehdon. Mää­ri­täm­me myös, että ehdon täyttävät arvot korvataan arvolla -1 ja kaikki muut arvot korvataan arvolla 0.

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

Tuloksena oleva new_arr sisältää ehdon pe­rus­teel­la muokatun taulukon. Tu­lok­ses­sa arvot, jotka ovat suurempia kuin 3, korvataan arvolla -1. Kaikki muut arvot korvataan arvolla 0.

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

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.

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

Tässä esi­mer­kis­sä 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) suo­ri­te­taan ilman korvaavia arvoja, ja tuloksena pa­lau­te­taan tuple in­dek­seis­tä, jotka täyttävät ehdon arr > 2. Tuloksena on taulukko in­dek­seis­tä, joiden elementit ovat suurempia kuin 2.

Lähetys np.where:llä

NumPy-kir­jas­tos­sa lähetys mah­dol­lis­taa eri muo­tois­ten tau­lu­koi­den kä­sit­te­lyn, kunhan tietyt ehdot täyttyvät. Kun taulukot ovat eri muotoisia, NumPy yrittää suurentaa niitä, jotta ne ovat yh­teen­so­pi­via.

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

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

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

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

Kahden taulukon muodot eivät täysin vastaa toisiaan, mutta lä­he­tys­toi­min­toa voidaan käyttää niiden välisten ope­raa­tioi­den mah­dol­lis­ta­mi­seen. Jos esi­mer­kik­si ha­luai­sim­me lisätä kunkin rivin arvot arr arvoihin row, lä­he­tys­toi­min­to mah­dol­lis­tai­si sen.

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

Yllä olevassa esi­mer­kis­sä yk­siu­lot­tei­nen taulukko row laa­jen­net­tiin (3, 3) mat­rii­sik­si vas­taa­maan muodon arr muotoa. Sitten elementit arr ja row las­ket­tiin yhteen elementti ele­men­til­tä.

Siirry pää­va­lik­koon