Unabhängiges Rollen von Matrixzeilen mithilfe der erweiterten Indizierung
Gegeben eine Matrix A und ein Array r, das Rollwerte für jede Zeile enthält, ist Ihr Ziel dies Rollen Sie jede Zeile von A unabhängig unter Verwendung dieser Rollwerte.
Der effizienteste Ansatz, dies zu erreichen, ist die erweiterte Indizierung in NumPy. Bei dieser Technik wird ein neues Meshgrid erstellt, das die Rollwerte auf die Spalten von A anwendet. So können Sie es implementieren:
<code class="python">import numpy as np # Define the matrix A and roll values r A = np.array([[4, 0, 0], [1, 2, 3], [0, 0, 5]]) r = np.array([2, 0, -1]) # Create a meshgrid of rows and negative shifted columns rows, column_indices = np.ogrid[:A.shape[0], :A.shape[1]] r[r < 0] += A.shape[1] column_indices = column_indices - r[:, np.newaxis] # Use advanced indexing to apply the roll values result = A[rows, column_indices] # Print the result print(result)</code>
Dieser Ansatz verwendet negativ verschobene Spaltenindizes, um eine gültige Indizierung sicherzustellen, und wendet die Rollwerte an durch das Maschengitter, was zu einer Matrix mit unabhängig gerollten Reihen führt.
Das obige ist der detaillierte Inhalt vonWie führt man mithilfe der erweiterten Indizierung in NumPy ein unabhängiges Rollen von Matrixzeilen durch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!