logo

numpy.where() v Pythonu

Modul NumPy nudi funkcijo numpy.where() za izbiranje elementov na podlagi pogoja. Vrne elemente, izbrane med a ali b, odvisno od pogoja.

Na primer, če so vsi argumenti -> pogoj, a & b posredovani v numpy.where(), bo vrnil elemente, izbrane iz a & b, odvisno od vrednosti v matriki bool, ki jih je dal pogoj.

Če je podan samo pogoj, je ta funkcija okrajšava za funkcijo np.asarray (pogoj).nonzero(). Čeprav bi bilo treba neposredno dati prednost različni od nič, saj se pravilno obnaša za podrazrede.

Sintaksa:

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

Parametri:

To so naslednji parametri v funkciji numpy.where():

kako dobiti trenutni datum v Javi

pogoj: array_like, bool

Če je ta parameter nastavljen na True, donos x, drugače pa y.

x, y: array_like:

java, kako pretvoriti niz v int

Ta parameter določa vrednosti, med katerimi lahko izbirate. X, y in pogoj morajo biti oddajni v neko obliko.

Vrne:

Ta funkcija vrne matriko z elementi iz x, kjer je pogoj True, in elementi iz y drugje.

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

Primer 2: Za večdimenzionalni niz

 import numpy as np a=np.arange(12) b=np.where([[True, False], [True, True]],[[1, 2], [3, 4]],[[9, 8], [7, 6]]) b 

Izhod:

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

Primer 3: Oddajanje x, y in pogoj

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

Izhod:

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

V zgornji kodi

algoritem globinsko iskanje
  • Uvozili smo numpy z vzdevkom np.
  • S funkcijo np.arange() smo ustvarili matriko 'a'.
  • Razglasili smo spremenljivko 'b' in dodelili vrnjeno vrednost funkcije np.where().
  • Posredovali smo večdimenzionalno matriko logičnih vrednosti kot pogoj ter x in y kot matriki celih števil.
  • Nazadnje smo poskušali natisniti vrednost b.

V izhodu je bila vrednost x primerjana z vrednostjo y, če je izpolnjevala pogoj, potem bo natisnjena vrednost x, sicer bo natisnjena vrednost y, ki je bila posredovana kot argument v funkciji where().

Primer 4: Oddajanje posebne vrednosti

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