[Recommandation associée : Tutoriel vidéo Python3 ]
La premièrenp.where(condition, x, y)
, c'est-à-dire que la condition est la condition Lorsque la condition est remplie, la sortie est x, et. si la condition n'est pas remplie, le résultat est y .Allez directement au 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])
Ce qui précède est facile à comprendre, mais l'exemple sur le site officiel n'est pas facile à comprendre, comme indiqué ci-dessous :
np.where([[True,False], [True,True]], [[1,2], [3,4]], [[9,8], [7,6]]) // 输出 array([[1, 8], [3, 4]])
Il peut être compris de cette façon. La valeur bool dans la première ligne représente la condition, qui indique si elle prend une valeur. Cela signifie, regardez d'abord [True, False], c'est-à-dire que la première valeur True signifie que la première ligne prend 1 dans. [1, 2] de la première ligne de valeurs, au lieu de prendre le 9 ci-dessous, False signifie ne pas prendre la première ligne [1, 2] et prendre le 8 de la deuxième ligne [9, 8]. identique à [3, 4].
Pour faciliter la compréhension, donnons un autre exemple :
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')
a>5True dans la première ligne, puis prenons la première valeur de la première ligne, a<5 prend la deuxième valeur du deuxième ligne, et la même chose s'applique ci-dessous
Après avoir compris la première méthode, regardons la deuxième méthode de np.where :
C'est-à-dire np.where(condition), uniquement la condition (condition), sans x et y, puis affichez les coordonnées de l'élément qui remplit la condition (c'est-à-dire non-0) (équivalent à numpy.nonzero). Les coordonnées ici sont données sous la forme d'un tuple. Habituellement, le tuple de sortie contient plusieurs tableaux, correspondant aux coordonnées de chaque dimension des éléments qui remplissent les conditions.
>>> 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[索引]
Donnez-moi un exemple de code que j'ai rencontré :
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))
Les deux composants du tableau renvoyés indiquent quelle ligne et quelle valeur est 1, donc le premier tableau du résultat indique l'index de la ligne, et les deux tableaux représentent le index de colonne, qui est l'index d'argent cassé de 1.
1.np.where(condition,x,y) Lorsqu'il y a trois paramètres dans Where, le premier Le paramètre représente une condition. Lorsque la condition est vraie, la méthode Where renvoie x. Lorsque la condition n'est pas vraie, Where renvoie y
2.np.where(condition) Lorsqu'il n'y a qu'un seul paramètre dans Where, ce paramètre représente le. condition. Lorsque la condition est vraie, où renvoie les coordonnées de chaque élément qui répond à la condition et la renvoie sous la forme d'un tuple