Heim > Artikel > Backend-Entwicklung > Wie wählt man effizient bestimmte Spaltenindizes pro Zeile in NumPy-Arrays aus?
Effiziente Auswahl spezifischer Spaltenindizes pro Zeile in NumPy-Arrays
Bei der Arbeit mit NumPy-Matrizen kann es zu Situationen kommen, in denen Sie bestimmte Spaltenindizes extrahieren müssen Spalten pro Zeile basierend auf einer Liste von Indizes. Die Verwendung herkömmlicher Iterationsmethoden kann bei großen Datensätzen ineffizient sein. Um dieses Problem anzugehen, erkunden Sie alternative Lösungen zur Optimierung der Leistung.
Ein Ansatz beinhaltet die direkte Auswahl mithilfe eines booleschen Arrays. Betrachten Sie eine boolesche Matrix b mit derselben Form wie Ihre ursprüngliche Matrix a. Jede Spalte in b stellt eine Bedingung dar, die angibt, ob diese Spalte aus a ausgewählt werden soll. Durch die Nutzung der booleschen Indizierung können Sie die gewünschten Spaltenwerte direkt aus a[b] abrufen.
Zum Beispiel bei einer gegebenen Matrix a und einem booleschen Array b:
<code class="python">a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) b = np.array([[False, True, False], [True, False, False], [False, False, True]])</code>
Sie können Folgendes ausführen Direktauswahl:
<code class="python">result = a[b]</code>
Dieser Vorgang führt zur folgenden Ausgabe:
<code class="python">[2, 4, 9]</code>
Alternativ können Sie np.arange verwenden, um ein Indexarray zu erstellen und eine Direktauswahl darauf durchzuführen. Abhängig von der Logik Ihrer booleschen Array-Generierung bietet diese Methode möglicherweise Leistungsvorteile.
<code class="python">result = a[np.arange(len(a)), [1, 0, 2]]</code>
Dieser Ansatz erzeugt die gleiche Ausgabe wie die boolesche Array-Lösung.
Durch die Nutzung dieser optimierten Auswahltechniken können Sie die Effizienz beim Extrahieren spezifischer Spaltenindizes pro Zeile aus großen NumPy-Arrays erheblich verbessern.
Das obige ist der detaillierte Inhalt vonWie wählt man effizient bestimmte Spaltenindizes pro Zeile in NumPy-Arrays aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!