Maison  >  Article  >  développement back-end  >  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
Patricia Arquetteoriginal
2024-10-26 09:13:30868parcourir

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

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.]
<code class="python">dists[(dists >= r) & (dists <= r+dr)]

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)

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

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>

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