Heim >Backend-Entwicklung >Python-Tutorial >Wie indiziere ich mehrere Arrays in NumPy?

Wie indiziere ich mehrere Arrays in NumPy?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-10 00:34:021049Durchsuche

How to Index Multiple Arrays in NumPy?

Indizierung mehrerer Arrays in NumPy

In NumPy erfordert die Indizierung über eindimensionale Arrays hinaus fortgeschrittene Techniken. Ein Szenario besteht darin, ein Array basierend auf den Werten eines anderen Arrays zu indizieren, was als mehrdimensionale Indizierung bezeichnet wird.

Betrachten Sie Matrizen A mit beliebigen Werten:

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

Und Matrix B enthält Indizes von Elementen in A:

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

Um Werte aus A mithilfe der Indizes in B auszuwählen können Sie die erweiterte Indizierung von NumPy verwenden:

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

Dieser Indizierungsansatz kombiniert die Zeilenindizes (0, 1, 2) mit den in B angegebenen Indizes.

Alternativ können Sie die lineare Indizierung verwenden:

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

Hier stellen m und n die Anzahl der Zeilen bzw. Spalten in A dar. np.take() extrahiert Elemente aus A basierend auf den linearen Indizes, die durch die Summe von B und n multipliziert mit dem Bereich der Zeilenindizes generiert werden.

Mit beiden Die Ausgabe lautet:

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

Diese Indizierungsmethode bietet Flexibilität beim Zugriff auf und bei der Bearbeitung von Elementen basierend auf mehreren Kriterien und erhöht die Vielseitigkeit von NumPy-Arrays für komplexe Datenverarbeitungsszenarien.

Das obige ist der detaillierte Inhalt vonWie indiziere ich mehrere Arrays in NumPy?. 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