Modul NumPy poskytuje funkci numpy.where() pro výběr prvků na základě podmínky. Vrací prvky vybrané z a nebo b v závislosti na podmínce.
mylivecricket v živém kriketu
Pokud jsou například všechny argumenty -> podmínka, a & b předány v numpy.where(), vrátí prvky vybrané z a & b v závislosti na hodnotách v boolovském poli, které podmínka přináší.
Pokud je zadána pouze podmínka, je tato funkce zkratkou funkce np.asarray (condition).nonzero(). Ačkoli nenulová by měla být preferována přímo, protože se chová správně pro podtřídy.
Syntax:
numpy.where(condition[, x, y])
Parametry:
Toto jsou následující parametry ve funkci numpy.where():
podmínka: array_like, bool
Pokud je tento parametr nastaven na hodnotu True, výnos x jinak výnos y.
x, y: array_like:
java mvc
Tento parametr definuje hodnoty, ze kterých lze vybírat. X, y a podmínka musí být přenositelné do nějakého tvaru.
Vrácení:
Tato funkce vrací pole s prvky z x, kde je podmínka True, a prvky z y jinde.
Příklad 1: np.where()
import numpy as np a=np.arange(12) b=np.where(a<6,a,5*a) b < pre> <p> <strong>In the above code</strong> </p> <ul> <li>We have imported numpy with alias name np.</li> <li>We have created an array 'a' using np.arange() function.</li> <li>We have declared the variable 'b' and assigned the returned value of np.where() function.</li> <li>We have passed the array 'a' in the function.</li> <li>Lastly, we tried to print the value of b.</li> </ul> <p>In the output, the values ranging from 0 to 5 remain the same as per the condition, and the other values have been multiplied with 5.</p> <p> <strong>Output:</strong> </p> <pre> array([ 0, 1, 2, 3, 4, 5, 30, 35, 40, 45, 50, 55]) </pre> <h3>Example 2: For multidimensional array</h3> <pre> import numpy as np a=np.arange(12) b=np.where([[True, False], [True, True]],[[1, 2], [3, 4]],[[9, 8], [7, 6]]) b </pre> <p> <strong>Output:</strong> </p> <pre> array([[1, 8], [3, 4]]) </pre> <h3>Example 3: Broadcasting x, y, and condition</h3> <pre> import numpy as np x, y = np.ogrid[:3, :4] a=np.where(x > y, x, 10 + y) a </pre> <p> <strong>Output:</strong> </p> <pre> array([[10, 11, 12, 13], [ 1, 11, 12, 13], [ 2, 2, 12, 13]]) </pre> <p> <strong>In the above code</strong> </p> <ul> <li>We have imported numpy with alias name np.</li> <li>We have created an array 'a' using np.arange() function. </li> <li>We declared the variable 'b' and assigned the returned value of np.where() function.</li> <li>We have passed a multidimensional array of boolean as a condition and x and y as an integer arrays.</li> <li>Lastly, we tried to print the value of b.</li> </ul> <p>In the output, the x value has been compared to y value if it satisfied the condition, then it will be printed x value otherwise, it will print y value, which has passed as an argument in the where() function.</p> <h3>Example 4: Broadcasting specific value</h3> <pre> x=np.array([[0,1,2],[0,2,5],[0,4,8]]) y=np.where(x<4,x,-2) y < pre> <p> <strong>Output:</strong> </p> <pre> array([[ 0, 1, 2], [ 0, 2, -2], [ 0, -2, -2]]) </pre> <hr></4,x,-2)></pre></6,a,5*a)>
Příklad 2: Pro vícerozměrné pole
import numpy as np a=np.arange(12) b=np.where([[True, False], [True, True]],[[1, 2], [3, 4]],[[9, 8], [7, 6]]) b
Výstup:
array([[1, 8], [3, 4]])
Příklad 3: Vysílání x, ya podmínka
import numpy as np x, y = np.ogrid[:3, :4] a=np.where(x > y, x, 10 + y) a
Výstup:
array([[10, 11, 12, 13], [ 1, 11, 12, 13], [ 2, 2, 12, 13]])
Ve výše uvedeném kódu
- Importovali jsme numpy s aliasem np.
- Vytvořili jsme pole 'a' pomocí funkce np.arange().
- Deklarovali jsme proměnnou 'b' a přiřadili vrácenou hodnotu funkce np.where().
- Předali jsme vícerozměrné pole booleanů jako podmínku a x a y jako celočíselná pole.
- Nakonec jsme zkusili vytisknout hodnotu b.
Ve výstupu byla hodnota x porovnána s hodnotou y, pokud splnila podmínku, pak bude vytištěna hodnota x, jinak bude vytištěna hodnota y, která předala jako argument ve funkci where().
Příklad 4: Specifická hodnota pro vysílání
x=np.array([[0,1,2],[0,2,5],[0,4,8]]) y=np.where(x<4,x,-2) y < pre> <p> <strong>Output:</strong> </p> <pre> array([[ 0, 1, 2], [ 0, 2, -2], [ 0, -2, -2]]) </pre> <hr></4,x,-2)>
4,x,-2)>6,a,5*a)>