logo

numpy.where() en Python

Le module NumPy fournit une fonction numpy.where() pour sélectionner des éléments en fonction d'une condition. Il renvoie des éléments choisis parmi a ou b selon la condition.

Par exemple, si tous les arguments -> condition, a & b sont passés dans numpy.where() alors il renverra les éléments sélectionnés parmi a & b en fonction des valeurs du tableau booléen fournies par la condition.

Si seule la condition est fournie, cette fonction est un raccourci vers la fonction np.asarray (condition).nonzero(). Bien que différent de zéro doive être préféré directement, car il se comporte correctement pour les sous-classes.

Syntaxe:

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

Paramètres:

Ce sont les paramètres suivants dans la fonction numpy.where() :

condition : array_like, booléen

Si ce paramètre est défini sur True, donne x sinon donne y.

x, y : array_like :

Ce paramètre définit les valeurs parmi lesquelles choisir. Le x, le y et la condition doivent pouvoir être diffusés sous une certaine forme.

Retour:

Cette fonction renvoie le tableau avec les éléments de x où la condition est vraie et les éléments de y ailleurs.

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

Exemple 2 : pour un tableau multidimensionnel

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

Sortir:

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

Exemple 3 : diffusion x, y et condition

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

Sortir:

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

Dans le code ci-dessus

  • Nous avons importé numpy avec le nom d'alias np.
  • Nous avons créé un tableau 'a' en utilisant la fonction np.arange().
  • Nous avons déclaré la variable « b » et attribué la valeur renvoyée par la fonction np.where().
  • Nous avons passé un tableau multidimensionnel de booléens comme condition et x et y comme tableaux d'entiers.
  • Enfin, nous avons essayé d'imprimer la valeur de b.

Dans la sortie, la valeur x a été comparée à la valeur y si elle remplit la condition, alors elle sera imprimée la valeur x sinon, elle imprimera la valeur y, qui a été passée comme argument dans la fonction Where().

Exemple 4 : Valeur spécifique à la diffusion

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