Maison > développement back-end > Tutoriel Python > Comment effectuer un roulement indépendant des lignes matricielles à l'aide de l'indexation avancée dans NumPy ?

Comment effectuer un roulement indépendant des lignes matricielles à l'aide de l'indexation avancée dans NumPy ?

Barbara Streisand
Libérer: 2024-10-21 14:15:02
original
500 Les gens l'ont consulté

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

Rolling Matrix Rows indépendamment à l'aide de l'indexation avancée

Étant donné une matrice A et un tableau r contenant des valeurs de roll pour chaque ligne, votre objectif est de faites rouler chaque ligne de A indépendamment en utilisant ces valeurs de lancer.

L'approche la plus efficace pour y parvenir consiste à utiliser l'indexation avancée dans NumPy. Cette technique consiste à construire une nouvelle grille de maillage qui applique les valeurs de roulement aux colonnes de A. Voici comment vous pouvez l'implémenter :

<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>
Copier après la connexion

Cette approche utilise des indices de colonne décalés négatifs pour garantir une indexation valide et applique les valeurs de roulement à travers la grille maillée, ce qui donne une matrice avec des lignes roulées indépendamment.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal