logo

numpy.where() in Python

Das NumPy-Modul bietet eine Funktion numpy.where() zum Auswählen von Elementen basierend auf einer Bedingung. Je nach Bedingung werden Elemente zurückgegeben, die aus a oder b ausgewählt wurden.

Wenn beispielsweise alle Argumente -> Bedingung, a und b in numpy.where() übergeben werden, werden Elemente zurückgegeben, die aus a und b ausgewählt wurden, abhängig von den Werten im Bool-Array, die durch die Bedingung zurückgegeben werden.

Wenn nur die Bedingung bereitgestellt wird, ist diese Funktion eine Kurzform der Funktion np.asarray (condition).nonzero(). Obwohl ein Wert ungleich Null direkt bevorzugt werden sollte, da er sich für Unterklassen korrekt verhält.

Syntax:

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

Parameter:

Dies sind die folgenden Parameter in der Funktion numpy.where():

Bedingung: array_like, bool

Wenn dieser Parameter auf „True“ gesetzt ist, wird x zurückgegeben, andernfalls wird y zurückgegeben.

x, y: array_like:

Dieser Parameter definiert die Werte, aus denen ausgewählt werden kann. X, Y und die Bedingung müssen in eine bestimmte Form übertragen werden können.

Kehrt zurück:

Diese Funktion gibt das Array mit Elementen aus x zurück, wenn die Bedingung wahr ist, und Elementen aus y an anderer Stelle.

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

Beispiel 2: Für mehrdimensionales Array

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

Ausgabe:

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

Beispiel 3: Übertragung von x, y und Bedingung

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

Ausgabe:

E-R-Modelldiagramm
 array([[10, 11, 12, 13], [ 1, 11, 12, 13], [ 2, 2, 12, 13]]) 

Im obigen Code

  • Wir haben numpy mit dem Aliasnamen np importiert.
  • Wir haben mit der Funktion np.arange() ein Array „a“ ​​erstellt.
  • Wir haben die Variable „b“ deklariert und den zurückgegebenen Wert der Funktion np.where() zugewiesen.
  • Wir haben ein mehrdimensionales Array mit booleschen Werten als Bedingung und x und y als ganzzahlige Arrays übergeben.
  • Zuletzt haben wir versucht, den Wert von b auszugeben.

In der Ausgabe wurde der x-Wert mit dem y-Wert verglichen. Wenn die Bedingung erfüllt ist, wird der x-Wert ausgegeben, andernfalls wird der y-Wert ausgegeben, der als Argument in der Funktion where() übergeben wurde.

Beispiel 4: Spezifischer Wert übertragen

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