logo

numpy.where() v Pythone

Modul NumPy poskytuje funkciu numpy.where() na výber prvkov na základe podmienky. Vráti prvky vybrané z a alebo b v závislosti od podmienky.

Napríklad, ak sú všetky argumenty -> podmienka, a & b odovzdané v numpy.where(), potom vráti prvky vybrané z a & b v závislosti od hodnôt v boolovom poli, ktoré podmienka získa.

Ak je zadaná iba podmienka, táto funkcia je skratkou funkcie np.asarray (condition).nonzero(). Hoci nenulová by mala byť preferovaná priamo, pretože sa správa správne pre podtriedy.

Syntax:

 numpy.where(condition[, x, y]) 

Parametre:

Toto sú nasledujúce parametre vo funkcii numpy.where():

podmienka: array_like, bool

Ak je tento parameter nastavený na hodnotu True, výnos x inak výnos y.

x, y: array_like:

Tento parameter definuje hodnoty, z ktorých si môžete vybrať. X, y a podmienka musia byť vysielateľné do nejakého tvaru.

Vrátenie:

Táto funkcia vráti pole s prvkami z x, kde je podmienka True a prvkami z y inde.

Prí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 &apos;a&apos; using np.arange() function.</li> <li>We have declared the variable &apos;b&apos; and assigned the returned value of np.where() function.</li> <li>We have passed the array &apos;a&apos; 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 &gt; 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 &apos;a&apos; using np.arange() function. </li> <li>We declared the variable &apos;b&apos; 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)>

Príklad 2: Pre viacrozmerné 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ýkon:

 array([[1, 8], [3, 4]]) 

Príklad 3: Vysielanie x, y a podmienka

 import numpy as np x, y = np.ogrid[:3, :4] a=np.where(x &gt; y, x, 10 + y) a 

Výkon:

 array([[10, 11, 12, 13], [ 1, 11, 12, 13], [ 2, 2, 12, 13]]) 

Vo vyššie uvedenom kóde

  • Importovali sme numpy s aliasom np.
  • Vytvorili sme pole 'a' pomocou funkcie np.arange().
  • Deklarovali sme premennú 'b' a priradili vrátenú hodnotu funkcie np.where().
  • Prešli sme viacrozmerné pole boolean ako podmienku a x a y ako celočíselné polia.
  • Nakoniec sme sa pokúsili vytlačiť hodnotu b.

Vo výstupe bola hodnota x porovnaná s hodnotou y, ak splnila podmienku, potom sa vypíše hodnota x, inak sa vypíše hodnota y, ktorá prešla ako argument vo funkcii where().

Príklad 4: Špecifická hodnota vysielania

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