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

Patricia Arquette
Freigeben: 2024-10-26 08:50:03
Original
819 Leute haben es durchsucht

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))]
Nach dem Login kopieren

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)]
Nach dem Login kopieren

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))
Nach dem Login kopieren

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.]
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!