Maison  >  Article  >  développement back-end  >  Analyse détaillée Python de l'application de code np.where()

Analyse détaillée Python de l'application de code np.where()

WBOY
WBOYavant
2022-08-24 09:11:302334parcourir

[Recommandation associée : Tutoriel vidéo Python3 ]

np.where a deux utilisations :

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([[&#39;chosen&#39;, &#39;chosen&#39;], [&#39;chosen&#39;, &#39;chosen&#39;]], dtype=&#39;<U10&#39;)

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.

Pièce jointe : np.where() utilisation multi-conditions

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

3 Lorsqu'il y a plusieurs conditions, & signifie et, | Par exemple, a = np.where((0Notez que x, y doivent conserver la même taille que a. R Par exemple : 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)

Résultat :

[[1 1 1]

[0 1 1]
[1 0 1]]



À partir de là, vous pouvez voir que chaque élément des données ne répond qu'aux données & gt; data<=2, s'il est satisfait, il renverra la valeur de np.ones_like(data)

coordonnées correspondantes
, s'il n'est pas satisfait, il renverra la valeur de np.zeros_like(data)

coordonnées correspondantes . Bien entendu, x et y peuvent être remplacés par d’autres valeurs, à condition qu’elles aient la même taille que les conditions. 【Recommandation associée : Tutoriel vidéo Python3

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer