Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich die Funktion „np.where“ von NumPy verwenden, um Elemente basierend auf mehreren Bedingungen auszuwählen?

Wie kann ich die Funktion „np.where“ von NumPy verwenden, um Elemente basierend auf mehreren Bedingungen auszuwählen?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-26 08:50:03820Durchsuche

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

Numpy-Where-Funktion mit mehreren Bedingungen

Beim Umgang mit Arrays kann die Funktion np.where in NumPy ein nützliches Werkzeug zur Auswahl spezifischer Elemente sein Elemente basierend auf bestimmten Bedingungen. Allerdings kann es zu Verwirrung kommen, wenn versucht wird, mehrere Bedingungen gleichzeitig anzuwenden.

Bedenken Sie das in der Frage dargestellte Szenario: Das Ziel besteht darin, Entfernungen innerhalb eines bestimmten Bereichs aus einem Array namens dists auszuwählen. Der folgende Code wurde versucht:

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

Dieser Code wählt jedoch nur Abstände aus, die kleiner oder gleich r dr sind, nicht beide Bedingungen. Um zu verstehen, warum dies geschieht, ist es wichtig zu beachten, dass np.where eine Liste von Indizes und kein boolesches Array zurückgibt.

Korrektur des Codes

Der richtige Weg dazu Anwenden mehrerer Bedingungen mit np.where besteht darin, ein kombiniertes boolesches Array mit elementweisen Operatoren (& für UND, | für ODER) zu erstellen, wie unten gezeigt:

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

Oder, wenn das Ergebnis speziell benötigt wird Verwenden Sie in Form von Indizes die folgende Syntax:

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

Warum der ursprüngliche Code nicht funktionierte

Die in der ursprünglichen Frage enthaltene Codesequenz bewertete zwei Trennen Sie die Bedingungen unabhängig voneinander: zuerst Abstände größer oder gleich r und dann Abstände kleiner oder gleich r dr. Da np.where jedoch Indizes zurückgibt, führte die Verkettung der Ergebnisse dieser beiden Bedingungen mit und zur Auswahl nur der Indizes aus der zweiten Bedingung.

Um ein boolesches Array zu erstellen, das die Bedingungen elementweise kombiniert Operatoren verwendet werden. Dadurch wird sichergestellt, dass jedes Element im Array basierend auf beiden Bedingungen gleichzeitig entweder wahr oder falsch ist.

Alternativer Ansatz

Eine alternative Methode zum Auswählen von Abständen innerhalb eines Bereichs ist: Verwenden Sie die bedingte Indizierung, wie unten gezeigt:

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

Diese Option bietet eine präzisere und lesbarere Lösung, indem ein boolesches Array erstellt wird, das prüft, ob jeder Abstand innerhalb eines Bereichs liegt, der bei r zentriert ist.

Das obige ist der detaillierte Inhalt vonWie kann ich die Funktion „np.where“ von NumPy verwenden, um Elemente basierend auf mehreren Bedingungen auszuwählen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn