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

Patricia Arquette
Libérer: 2024-10-26 08:50:03
original
819 Les gens l'ont consulté

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

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

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

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

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!