Heim  >  Artikel  >  Backend-Entwicklung  >  Wie wähle ich mithilfe von Listen oder booleschen Arrays effizient bestimmte Spalten pro Zeile in NumPy aus?

Wie wähle ich mithilfe von Listen oder booleschen Arrays effizient bestimmte Spalten pro Zeile in NumPy aus?

DDD
DDDOriginal
2024-11-01 10:52:30345Durchsuche

How to Efficiently Select Specific Columns per Row in NumPy Using Lists or Boolean Arrays?

Effiziente Auswahl spezifischer Spalten pro Zeile in NumPy mithilfe von Listen oder booleschen Arrays

NumPy bietet umfangreiche Funktionen zur Bearbeitung mehrdimensionaler Arrays. Allerdings kann die Auswahl spezifischer Spalten basierend auf einer Liste von Indizes für jede Zeile eine Herausforderung sein und effiziente Lösungen erfordern.

Ein Ansatz zur Lösung dieses Problems ist die Verwendung boolescher Arrays. Jede Spalte eines booleschen Arrays kann die gewünschte Auswahl für eine bestimmte Zeile darstellen. Durch die direkte Auswahl mit dem booleschen Array können bestimmte Spalten effizient extrahiert werden. Zum Beispiel:

<code class="python">import numpy as np

a = np.array([1, 2, 3])
b = np.array([[False, True, False], [True, False, False], [False, False, True]])
a[b]
# Output: [2, 4, 9]</code>

Alternativ ist es möglich, ein Array zu erstellen, das den Spaltenbereich darstellt, und darauf eine direkte Auswahl zu verwenden. Dieser Ansatz ist jedoch möglicherweise nicht immer optimal.

<code class="python">a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
a[np.arange(len(a)), [1, 0, 2]]
# Output: [2, 4, 9]</code>

Durch die Nutzung dieser Methoden ist es möglich, bestimmte Spalten pro Zeile in NumPy-Arrays effizient auszuwählen, unabhängig davon, ob die Auswahlkriterien als Liste bereitgestellt werden Indizes oder ein boolesches Array.

Das obige ist der detaillierte Inhalt vonWie wähle ich mithilfe von Listen oder booleschen Arrays effizient bestimmte Spalten pro Zeile in NumPy aus?. 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