Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich mithilfe von Listen in NumPy effizient Spalten nach Index auswählen?

Wie kann ich mithilfe von Listen in NumPy effizient Spalten nach Index auswählen?

Linda Hamilton
Linda HamiltonOriginal
2024-10-27 02:11:30894Durchsuche

How Can I Efficiently Select Columns by Index Using Lists in NumPy?

NumPy: Effiziente Auswahl von Spalten nach Index mithilfe von Listen

Viele Datenbearbeitungsaufgaben umfassen die Auswahl bestimmter Spalten aus einer NumPy-Matrix. Wenn die auszuwählenden Spalten je nach Zeile variieren, besteht ein einfacher Ansatz darin, über das Array zu iterieren, was bei großen Datensätzen rechenintensiv sein kann.

NumPy bietet jedoch eine optimiertere Lösung mit booleschen oder ganzzahligen Arrays. Anstelle einer Liste von Spaltenindizes können Sie eine Matrix mit derselben Form wie die ursprüngliche Matrix erstellen, wobei jede Spalte Werte enthält, die angeben, ob diese Spalte ausgewählt werden soll.

Betrachten Sie beispielsweise die folgende Matrix:

[[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]

Und die folgende Indexmatrix:

[[False, True, False],
[True, False, False],
[False, False, True]]

Mit der Direktauswahl von NumPy können Sie die gewünschten Werte einfach extrahieren:

<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]])
selected_values = a[b]</code>

Dies erzeugt die gewünschte Ausgabe :

[2, 4, 9]

Alternativ können Sie die arange()-Funktion und die direkte Auswahl für noch mehr Effizienz verwenden:

<code class="python">selected_values = a[np.arange(len(a)), [1, 0, 2]]</code>

Durch die Nutzung der optimierten NumPy-Auswahlmethoden können Sie die Leistung Ihrer Datenmanipulationsaufgaben bei der Auswahl von Spalten durch Variation der Indizes pro Zeile.

Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe von Listen in NumPy effizient Spalten nach Index auswählen?. 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