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

WBOY
Libérer: 2022-08-24 09:11:30
avant
2330 Les gens l'ont consulté

[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])
Copier après la connexion

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]])
Copier après la connexion

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;)
Copier après la connexion

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[索引]
Copier après la connexion

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))
Copier après la connexion

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)
Copier après la connexion
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!

Étiquettes associées:
source:jb51.net
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal