Heim > Artikel > Backend-Entwicklung > Wie verwende ich die „where'-Funktion von Numpy für den Zugriff auf Array-Elemente mit mehreren Bedingungen richtig?
Zugriff auf Array-Elemente unter Verwendung mehrerer Bedingungen mit der Where-Funktion von Numpy
Bei der Arbeit mit Arrays in NumPy ist es oft notwendig, selektiv auf Elemente basierend zuzugreifen zu bestimmten Konditionen. Die Funktion where() spielt in diesem Szenario eine entscheidende Rolle und ermöglicht die flexible Auswahl von Elementen, die bestimmte Kriterien erfüllen.
Es gibt jedoch Fälle, in denen das gewünschte Verhalten von where() von den Erwartungen abweicht, was zu Fehlern führt oder unerwartete Ergebnisse. Das Verständnis der Nuancen dieser Funktion ist für eine effektive Array-Manipulation in NumPy unerlässlich.
Beachten Sie den folgenden Codeausschnitt:
<code class="python">dists[(np.where(dists >= r)) and (np.where(dists <= r + dr))]
Dieser Code zielt darauf ab, Abstände innerhalb eines bestimmten Bereichs [r, r dr]. Es werden jedoch nur Elemente erfasst, die die zweite Bedingung dists <= r dr erfüllen. Um dies zu beheben, können Sie entweder beide Kriterien in eine einzige Bedingung umwandeln oder eine ausgefallene Indizierung verwenden:
<code class="python">dists[abs(dists - r - dr/2.) <= dr/2.]
<code class="python">dists[(dists >= r) & (dists <= r+dr)]
Das Problem im Originalcode ist auf die falsche Verwendung von where() zurückzuführen. Im Gegensatz zu einem booleschen Array gibt where() eine Liste von Indizes zurück. Das Kombinieren zweier Indexlisten über und führt zur zweiten Liste, wodurch die erste Bedingung effektiv überschrieben wird.
Zur weiteren Klarheit bedenken Sie Folgendes:
<code class="python">a = np.where(dists >= r) b = np.where(dists <= r + dr)
Das Ergebnis von a und b ergibt b . Um das richtige boolesche Array zu erhalten, müssen Sie die Bedingungen mit dem elementweisen &-Operator kombinieren:
<code class="python">dists >= r & dists <= r + dr
Sobald das boolesche Array verfügbar ist, können Sie es für die Array-Auswahl verwenden:
<code class="python">dists[dists >= r & dists <= r + dr]</code>
Das obige ist der detaillierte Inhalt vonWie verwende ich die „where'-Funktion von Numpy für den Zugriff auf Array-Elemente mit mehreren Bedingungen richtig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!