Maison > développement back-end > Tutoriel Python > Comment utiliser correctement la fonction « where » de Numpy pour l'accès aux éléments de tableau multi-conditions ?

Comment utiliser correctement la fonction « where » de Numpy pour l'accès aux éléments de tableau multi-conditions ?

Patricia Arquette
Libérer: 2024-10-26 09:13:30
original
1045 Les gens l'ont consulté

 How to Correctly Use Numpy's `where` Function for Multi-Condition Array Element Access?

Accès aux éléments d'un tableau à l'aide de plusieurs conditions avec la fonction Where de Numpy

Lorsque vous travaillez avec des tableaux dans NumPy, il est souvent nécessaire d'accéder de manière sélective aux éléments en fonction à des conditions précises. La fonction Where() joue un rôle crucial dans ce scénario, permettant la sélection flexible d'éléments qui satisfont à des critères donnés.

Cependant, il arrive parfois que le comportement souhaité de Where() s'écarte des attentes, conduisant à des erreurs. ou des résultats inattendus. Comprendre les nuances de cette fonction est essentiel pour une manipulation efficace des tableaux dans NumPy.

Considérez l'extrait de code suivant :

<code class="python">dists[(np.where(dists >= r)) and (np.where(dists <= r + dr))]
Copier après la connexion

Ce code vise à sélectionner des distances dans une plage spécifiée [r, r docteur]. Cependant, il ne capture que les éléments répondant à la deuxième condition dists <= r dr. Pour remédier à cela, vous pouvez soit convertir les deux critères en une seule condition, soit utiliser une indexation sophistiquée :

<code class="python">dists[abs(dists - r - dr/2.) <= dr/2.]
Copier après la connexion
<code class="python">dists[(dists >= r) & (dists <= r+dr)]
Copier après la connexion

Le problème dans le code d'origine provient de l'utilisation incorrecte dewhere(). Contrairement à un tableau booléen, Where() renvoie une liste d'indices. La combinaison de deux listes d'indices via et aboutit à la deuxième liste, remplaçant ainsi la première condition.

Pour plus de clarté, considérez ce qui suit :

<code class="python">a = np.where(dists >= r)
b = np.where(dists <= r + dr)
Copier après la connexion

Le résultat de a et b donne b . Pour obtenir le tableau booléen correct, vous devez combiner les conditions à l'aide de l'opérateur élément par élément :

<code class="python">dists >= r &amp; dists <= r + dr
Copier après la connexion

Une fois le tableau booléen disponible, vous pouvez l'utiliser pour la sélection du tableau :

<code class="python">dists[dists >= r &amp; dists <= r + dr]</code>
Copier après la connexion

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