[Verwandte Empfehlung: Python3-Video-Tutorial]
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([['chosen', 'chosen'], ['chosen', 'chosen']], dtype='<U10')
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.
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.