Heim > Backend-Entwicklung > Python-Tutorial > Wie greife ich auf mehrdimensionale Arrays mit weniger Dimensionen zu?

Wie greife ich auf mehrdimensionale Arrays mit weniger Dimensionen zu?

Linda Hamilton
Freigeben: 2024-10-21 11:32:02
Original
918 Leute haben es durchsucht

How to Access Multidimensional Arrays with Fewer Dimensions?

Zugriff auf mehrdimensionale Arrays mit weniger Dimensionen

Betrachten Sie ein n-dimensionales Array wie a und ein (n-1)-dimensionales Array, idx. Um mithilfe von idx entlang einer bestimmten Dimension auf a zuzugreifen, können wir eine erweiterte Indizierung verwenden.

Für ein dreidimensionales Array a können wir die Maximalwerte entlang der ersten Dimension mithilfe von idx wie folgt berechnen:

<code class="python">m, n = a.shape[1:]
I, J = np.ogrid[:m, :n]
a_max_values = a[idx, I, J]</code>
Nach dem Login kopieren

Dieser Ansatz kann für Arrays mit einer beliebigen Anzahl von Dimensionen verallgemeinert werden:

<code class="python">def argmax_to_max(arr, argmax, axis):
    new_shape = list(arr.shape)
    del new_shape[axis]
    grid = np.ogrid[tuple(map(slice, new_shape))]
    grid.insert(axis, argmax)
    return arr[tuple(grid)]</code>
Nach dem Login kopieren

Um ein n-dimensionales Array mit einem (n-1)-dimensionalen Array zu indizieren, können wir ein Gitter aus erstellen Indizes für alle Achsen:

<code class="python">def all_idx(idx, axis):
    grid = np.ogrid[tuple(map(slice, idx.shape))]
    grid.insert(axis, idx)
    return tuple(grid)</code>
Nach dem Login kopieren

Mit diesem Raster können wir in die Eingabearrays indizieren:

<code class="python">a_max_values = a[all_idx(idx, axis=axis)]
b_max_values = b[all_idx(idx, axis=axis)]</code>
Nach dem Login kopieren

Dieser Ansatz bietet eine elegante Lösung für den Zugriff auf mehrdimensionale Arrays mit weniger Dimensionen.

Das obige ist der detaillierte Inhalt vonWie greife ich auf mehrdimensionale Arrays mit weniger Dimensionen zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage