Im Bereich der Datenmanipulation ist es oft notwendig, komplexe Operationen an mehrdimensionalen Arrays durchzuführen. Ein solches Szenario beinhaltet das unabhängige Rollen der Zeilen einer Matrix auf der Grundlage der bereitgestellten Verschiebungswerte.
Bei einer gegebenen Eingabematrix A und einem Array von Verschiebungswerten r besteht die Aufgabe darin, die Rolloperation auf jede Zeile von A anzuwenden unter Verwendung der entsprechenden Verschiebung von r. Das gewünschte Ergebnis ist:
[[0 0 4] [1 2 3] [0 5 0]]
Die erweiterte Indizierung bietet eine elegante Lösung für diese Herausforderung. Durch die Nutzung negativer Verschiebungswerte und fortschrittlicher Array-Slicing-Techniken können Sie den Rollvorgang wie folgt effizient implementieren:
<code class="python">rows, column_indices = np.ogrid[:A.shape[0], :A.shape[1]] # Always use a negative shift, so that column_indices are valid. # Alternative: r %= A.shape[1] r[r < 0] += A.shape[1] column_indices = column_indices - r[:, np.newaxis] result = A[rows, column_indices]</code>
Bei diesem Ansatz generiert ogrid ein Raster von Indizes, die den Zeilen und Spalten von A entsprechen. By Durch die Manipulation der Spaltenindizes basierend auf den negativen Verschiebungswerten wird die Rolloperation effektiv auf jede Zeile angewendet. Diese Methode bietet eine hocheffiziente Lösung zum unabhängigen Rollen von Matrixzeilen, ohne dass Schleifen erforderlich sind.
Das obige ist der detaillierte Inhalt vonWie rollt man Matrixzeilen mithilfe der erweiterten Indizierung unabhängig voneinander?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!