Maison  >  Article  >  développement back-end  >  Comment puis-je utiliser la fonction « np.where » de NumPy pour sélectionner des éléments en fonction de plusieurs conditions ?

Comment puis-je utiliser la fonction « np.where » de NumPy pour sélectionner des éléments en fonction de plusieurs conditions ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-26 08:50:03820parcourir

How can I use NumPy's `np.where` function to select elements based on multiple conditions?

Numpy Where Fonction avec plusieurs conditions

Lorsqu'il s'agit de tableaux, la fonction np.where dans NumPy peut être un outil utile pour sélectionner des éléments basés sur certaines conditions. Cependant, une confusion peut survenir lorsque vous essayez d'appliquer plusieurs conditions simultanément.

Considérez le scénario présenté dans la question : l'objectif est de sélectionner des distances dans une plage spécifiée à partir d'un tableau appelé distes. Le code suivant a été tenté :

dists[(np.where(dists >= r)) and (np.where(dists <= r + dr))]

Cependant, ce code sélectionne uniquement les distances inférieures ou égales à r dr, pas les deux conditions. Pour comprendre pourquoi cela se produit, il est essentiel de noter que np.where renvoie une liste d'indices, pas un tableau booléen.

Corriger le code

La bonne façon de appliquer plusieurs conditions avec np.where consiste à créer un tableau booléen combiné à l'aide d'opérateurs par éléments (& pour AND, | pour OR), comme indiqué ci-dessous :

dists[(dists >= r) &amp; (dists <= r + dr)]

Ou, si le résultat est spécifiquement nécessaire sous forme d'indices, utilisez la syntaxe suivante :

np.where((dists >= r) &amp; (dists <= r + dr))

Pourquoi le code d'origine n'a pas fonctionné

La séquence de code impliquée dans la question d'origine a évalué deux séparer les conditions indépendamment : d'abord, les distances supérieures ou égales à r, puis les distances inférieures ou égales à r dr. Cependant, comme np.where renvoie des indices, la concaténation des résultats de ces deux conditions en utilisant et a abouti à la sélection uniquement des indices de la deuxième condition.

Pour créer un tableau booléen qui combine les conditions, élément par élément des opérateurs sont utilisés. Cela garantit que chaque élément du tableau est vrai ou faux en fonction des deux conditions simultanément.

Approche alternative

Une méthode alternative pour sélectionner les distances dans une plage consiste à utilisez l'indexation conditionnelle, comme démontré ci-dessous :

dists[abs(dists - (r + dr / 2.)) <= dr / 2.]

Cette option fournit une solution plus concise et lisible en créant un tableau booléen qui vérifie si chaque distance est dans une plage centrée sur r.

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:
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