Heim >Backend-Entwicklung >Python-Tutorial >Wie können Arrays mit erweiterten NumPy-Techniken effizient indiziert werden?

Wie können Arrays mit erweiterten NumPy-Techniken effizient indiziert werden?

Linda Hamilton
Linda HamiltonOriginal
2024-11-16 15:51:03914Durchsuche

How to Efficiently Index Arrays with Advanced NumPy Techniques?

Arrays mit erweiterten NumPy-Techniken indizieren

In verschiedenen Rechenszenarien wird es notwendig, ein Array basierend auf den Werten eines anderen zu indizieren. Betrachten Sie das Beispiel, in dem wir zwei Matrizen haben: A mit beliebigen Werten und B mit Indizes. Das Ziel besteht darin, Werte aus A auszuwählen, die durch die Indizes in B bestimmt werden.

Um dies zu erreichen, bietet NumPy verschiedene Indizierungsmethoden an:

1. Erweiterte Indizierung:

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

Dieser Indizierungsansatz initialisiert ein neues Array mit np.arange, um einen Spaltenindex für jede Zeile zu erstellen. Anschließend werden diese Zeilenindizes als erste Dimension und die Werte von B als zweite Dimension verwendet, um die Werte von A zu extrahieren.

2. Lineare Indizierung:

m, n = A.shape
out = np.take(A, B + n * np.arange(m)[:, None])

Alternativ können Sie die lineare Indizierung verwenden, wobei m und n die Form von A darstellen . Es verwendet np.take, um Elemente basierend auf dem kombinierten Array B und Indexoffsets auszuwählen, die durch Multiplikation von n mit den Zeilenindizes von np.arange erstellt werden .

Das obige ist der detaillierte Inhalt vonWie können Arrays mit erweiterten NumPy-Techniken effizient indiziert werden?. 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