Heim  >  Artikel  >  Backend-Entwicklung  >  Wie wähle ich mithilfe der Funktion „where“ Elemente aus einem Numpy-Array aus, die mehrere Bedingungen erfüllen?

Wie wähle ich mithilfe der Funktion „where“ Elemente aus einem Numpy-Array aus, die mehrere Bedingungen erfüllen?

Barbara Streisand
Barbara StreisandOriginal
2024-10-27 19:15:01455Durchsuche

How to Select Elements from a Numpy Array Satisfying Multiple Conditions using the `where` Function?

Numpy-Where-Funktion und mehrere Bedingungen

Diese Frage bezieht sich auf die Numpy-Where-Funktion und die Auswahl von Elementen basierend auf mehreren Bedingungen.

Problem- und Problembeschreibung

Der Benutzer möchte zwei Bedingungen (größer als und kleiner als) anwenden, um Elemente aus einem Array (dists) auszuwählen, die in einen bestimmten Bereich fallen. Die Verwendung der Where-Funktion als (np.where(dists >= r)) und (np.where(dists <= r dr)) führt jedoch zu unerwarteten Ergebnissen.

Lösung

Methode 1: Bedingungen zu einem einzigen Kriterium kombinieren

In diesem speziellen Fall wird empfohlen, die beiden Bedingungen zu einem einzigen Kriterium zu kombinieren:

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

Dieser unkomplizierte Ansatz prüft, ob der absolute Wert der Differenz zwischen dists und dem Bereichszentrum (r dr/2) kleiner oder gleich der Hälfte der Bereichsbreite (dr/2) ist.

Methode 2: Verwenden von Fancy Indexing

Alternativ kann man Fancy Indexing verwenden, um Elemente mithilfe einer booleschen Maske direkt aus dem ursprünglichen Array auszuwählen:

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

Der Vorteil davon Die Methode besteht darin, dass sie elementweise logische Operatoren (& und |) verwendet, um die Bedingungen zu kombinieren, was zu einer binären Maske führt, die die Elemente identifiziert, die die Kriterien erfüllen.

Erklärung des Problems

Der ursprüngliche Ansatz mit (np.where(dists >= r)) und (np.where(dists <= r dr)) schlägt fehl, weil np.where eine Liste von Indizes und kein boolesches Array zurückgibt. Das Anding zwischen zwei Zahlenlisten führt zur Auswertung der zweiten Liste und nicht zu einem logischen Vergleich.

Das obige ist der detaillierte Inhalt vonWie wähle ich mithilfe der Funktion „where“ Elemente aus einem Numpy-Array aus, die mehrere Bedingungen erfüllen?. 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