Heim >Backend-Entwicklung >Python-Tutorial >Wie greife ich mithilfe von Indizes aus einem anderen Array auf Array-Elemente in NumPy zu?

Wie greife ich mithilfe von Indizes aus einem anderen Array auf Array-Elemente in NumPy zu?

Susan Sarandon
Susan SarandonOriginal
2024-11-11 02:03:02746Durchsuche

How to Access Array Elements in NumPy Using Indices from Another Array?

Zugriff auf Array-Elemente mithilfe von Array-Indizes in NumPy

Die indizierten Funktionen von NumPy bieten leistungsstarke Techniken zur Datenbearbeitung, einschließlich der Möglichkeit, Elemente aus einem Array auszuwählen Verwendung von Indizes, die von einem anderen Array angegeben werden. Um dies zu erreichen:

Ansatz 1: Erweiterte Indizierung verwenden

A[np.arange(A.shape[0])[:,None] ,B]<br>

Dieser Code nutzt die erweiterte Indizierung, wobei np.arange(A.shape[0])[:,None] einen Spaltenvektor mit Indizes für jede Zeile in erstellt A. Die Kombination mit B ermöglicht die Indizierung von A entlang sowohl von Zeilen als auch von Spalten.

Ansatz 2: Lineare Indizierung

m,n = A.shape<br>np.take(A,B n*np.arange(m)[:,None])<br>

Dieser Ansatz nutzt eine lineare Indizierung, bei der jedes Element in A adressiert wird durch einen einzelnen Index. Zunächst wird ein linearer Index berechnet, indem die entsprechende Zeile von B zu einer mit np.arange generierten linearen Sequenz hinzugefügt wird. Dieser lineare Index wird dann verwendet, um Elemente aus A abzurufen.

Beispielverwendung:

Gegebene Matrix A:

array([[ 2, 4, 5, 3],
       [ 1, 6, 8, 9],
       [ 8, 7, 0, 2]])

Und Indexmatrix B :

array([[0, 0, 1, 2],
       [0, 3, 2, 1],
       [3, 2, 1, 0]])

Die Anwendung der Ansätze führt zum gewünschten Ergebnis:

array([[2, 2, 4, 5],
       [1, 9, 8, 6],
       [2, 0, 7, 8]])

Das obige ist der detaillierte Inhalt vonWie greife ich mithilfe von Indizes aus einem anderen Array auf Array-Elemente in NumPy zu?. 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