Heim >Backend-Entwicklung >Python-Tutorial >Wie indiziert man ein NumPy-Array durch ein anderes: Erweiterte Indizierung vs. lineare Indizierung?

Wie indiziert man ein NumPy-Array durch ein anderes: Erweiterte Indizierung vs. lineare Indizierung?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-10 13:23:03457Durchsuche

How to Index One NumPy Array by Another: Advanced Indexing vs. Linear Indexing?

Indizieren eines Arrays nach einem anderen in NumPy

Im wissenschaftlichen Rechnen ist die Bearbeitung mehrdimensionaler Arrays eine häufige Aufgabe. Die erweiterten Indizierungsfunktionen von NumPy stellen ein leistungsstarkes Tool für komplexe Indizierungsvorgänge dar und erleichtern das Extrahieren von Daten aus einem Array basierend auf Indexwerten, die in einem anderen Array gespeichert sind.

Stellen Sie sich eine Matrix A mit beliebigen Werten vor und eine Matrix B, die Indizes der Elemente in A enthält. Die Aufgabe besteht darin, Werte aus A auszuwählen, auf die B zeigt, was zu einer Matrix C führt.

Ein Ansatz, dies zu erreichen, ist NumPy erweiterte Indizierung:

C = A[np.arange(A.shape[0])[:, None], B]
  • np.arange(A.shape[0])[:, None]: Erstellt ein Array von Zeilenindizes für A, wobei jede Spalte denselben Zeilenindex darstellt.
  • [:, None]: Erweitert das Array zu einem 2D-Array mit einer zusätzlichen Dimension zur Ausrichtung an B.

Dieser Ansatz funktioniert effizient auf großen Arrays, ohne dass Schleifen erforderlich sind.

Die lineare Indizierung bietet eine weitere Methode für diesen Vorgang:

m, n = A.shape
C = np.take(A, B + n * np.arange(m)[:, None])
  • m, n = A.shape: Speichert die Abmessungen von A.
  • B n * np.arange(m)[:, None] : Berechnet den abgeflachten Index für jedes Element in C basierend auf den Indizes in B und der Zeilennummer.
  • np.take(A , ...): Extrahiert Elemente aus A mithilfe der abgeflachten Indizes.

Sowohl die erweiterte Indizierung als auch die lineare Indizierung bieten effiziente Methoden, um in NumPy ein Array nach einem anderen zu indizieren .

Das obige ist der detaillierte Inhalt vonWie indiziert man ein NumPy-Array durch ein anderes: Erweiterte Indizierung vs. lineare Indizierung?. 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