Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Python-Analyse der Codeanwendung np.where()

Detaillierte Python-Analyse der Codeanwendung np.where()

WBOY
WBOYnach vorne
2022-08-24 09:11:302334Durchsuche

[Verwandte Empfehlung: Python3-Video-Tutorial]

np.where hat zwei Verwendungszwecke:

Die erstenp.where(condition, x, y), das heißt, Bedingung ist die Bedingung, wenn die Bedingung erfüllt ist, und Wenn die Bedingung nicht erfüllt ist, lautet die Ausgabe y. Gehen Sie direkt zum Code:

a = np.arange(10)
//array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
print(np.where(a > 5, 1, -1))
//array([-1, -1, -1, -1, -1, -1,  1,  1,  1,  1])

Das Obige ist leicht zu verstehen, aber das Beispiel auf der offiziellen Website ist nicht leicht zu verstehen, wie unten gezeigt:

np.where([[True,False], [True,True]],   
			 [[1,2], [3,4]],
             [[9,8], [7,6]])
// 输出 array([[1, 8], [3, 4]])

Es kann Der Bool-Wert in der ersten Zeile stellt die Bedingung dar, die angibt, ob er einen Wert annimmt. Das heißt, der erste True-Wert bedeutet, dass die erste Zeile 1 annimmt [1, 2] der ersten Wertereihe, anstatt die 9 unten zu nehmen, bedeutet False, dass die erste Reihe [1, 2] nicht genommen wird und die 8 in der zweiten Reihe [9, 8] genommen wird Dasselbe wie [3, 4].
Um das Verständnis zu erleichtern, geben wir ein weiteres Beispiel:

a = 10
>>> np.where([[a > 5,a < 5], [a == 10,a == 7]],
             [["chosen","not chosen"], ["chosen","not chosen"]],
             [["not chosen","chosen"], ["not chosen","chosen"]])

//array([[&#39;chosen&#39;, &#39;chosen&#39;], [&#39;chosen&#39;, &#39;chosen&#39;]], dtype=&#39;<U10&#39;)

Die erste Zeile a>5True , dann nehmen Sie den ersten Wert der ersten Zeile, a<5 nimmt den zweiten Wert der zweiten

Nachdem wir die erste Methode verstanden haben, schauen wir uns die zweite Methode von np.where an:

Das heißt, np.where(condition), nur die Bedingung (condition), ohne x und y Geben Sie dann die Koordinaten des Elements aus, das die Bedingung erfüllt (dh ungleich 0) (entspricht numpy.nonzero). Die Koordinaten werden hier in Form eines Tupels angegeben. Normalerweise enthält das Ausgabetupel mehrere Arrays, die den Koordinaten jeder Dimension der Elemente entsprechen, die die Bedingungen erfüllen.

>>> a = np.array([2,4,6,8,10])
>>> np.where(a > 5)			
//(array([2, 3, 4]),)   返回索引值
>>> a[np.where(a > 5)]  			
//array([ 6,  8, 10]) 返回元素值,即a[索引]

Geben Sie mir ein Codebeispiel, auf das ich gestoßen bin:

a = array([[0., 1.],
  	       [0., 1.],
  	       [0., 1.],
  	       [0., 1.],
  	       [0., 1.],
  	       [0., 1.],
  	       [0., 1.],
  	       [0., 1.],
  	       [1., 0.],
  	       [0., 1.],
  	       [0., 1.],
  	       [0., 1.],
  	       [1., 0.],
  	       [1., 0.],
  	       [0., 1.],
  	       [0., 1.],
  	       [1., 0.],
  	       [0., 1.],
  	       [1., 0.],
  	       [0., 1.]])
np.where(a == 1)
//(array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
//        17, 18, 19], dtype=int64),
// array([1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1],
//       dtype=int64))

Die beiden zurückgegebenen Array-Komponenten geben an, welche Zeile und welcher Wert 1 ist, sodass das erste Array-Array im Ergebnis den Zeilenindex angibt und die beiden Array-Arrays darstellen Spaltenindex, der der gebrochene Silberindex von 1 ist.

Anhang: np.where() Verwendung mehrerer Bedingungen

1.np.where(condition,x,y) Wenn es drei Parameter in where gibt, ist der erste einer Parameter stellt eine Bedingung dar. Wenn die Bedingung wahr ist, gibt die Methode „x“ zurück. Wenn die Bedingung nicht wahr ist, gibt „wo“ y

2.np.where(condition) zurück Wenn die Bedingung wahr ist, werden die Koordinaten jedes Elements zurückgegeben, das die Bedingung erfüllt, und es wird in Form eines Tupels zurückgegeben.

3 Wenn es mehrere Bedingungen gibt, bedeutet &, oder. Beispiel: a = np.where((0Beachten Sie, dass x und y die gleiche Größe wie a haben müssen. R Zum Beispiel: re

import numpy as np

data = np.array([[0, 2, 0],
                           [3, 1, 2],
                           [0, 4, 0]])
new_data = np.where((data>= 0) & (data<=2), np.ones_like(data), np.zeros_like(data))
print(new_data)

Ergebnis:

[[1 1 1]

[0 1 1]
[1 0 1]]



Daraus können Sie erkennen, dass jedes Element in den Daten nur den Daten entspricht & gt; data<=2, wenn es erfüllt ist, wird der Wert der np.ones_like(data)

entsprechenden Koordinaten zurückgegeben, wenn es nicht erfüllt ist, wird der Wert der np.zeros_like(data)
entsprechenden Koordinaten zurückgegeben

. Natürlich können x und y in andere Werte geändert werden, sofern sie die gleichen Abmessungen wie die Bedingungen haben. 【Verwandte Empfehlungen: Python3-Video-Tutorial

Das obige ist der detaillierte Inhalt vonDetaillierte Python-Analyse der Codeanwendung np.where(). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:jb51.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen