Heim >Backend-Entwicklung >Python-Tutorial >Wie führt man mithilfe der erweiterten Indizierung in NumPy ein unabhängiges Rollen von Matrixzeilen durch?

Wie führt man mithilfe der erweiterten Indizierung in NumPy ein unabhängiges Rollen von Matrixzeilen durch?

Barbara Streisand
Barbara StreisandOriginal
2024-10-21 14:15:02464Durchsuche

How to Perform Independent Rolling of Matrix Rows Using Advanced Indexing in NumPy?

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!

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