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 ?
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 & 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 & 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!