Comment déplacer des éléments dans un tableau NumPy (avec exemples)



Vous pouvez utiliser l’une des méthodes suivantes pour décaler les éléments d’un tableau NumPy :

Méthode 1 : décaler les éléments (conserver tous les éléments d’origine)

#shift each element two positions to the right
data_new = np.roll(data, 2)

Méthode 2 : décaler les éléments (autoriser le remplacement des éléments)

#define shifting function
def shift_elements(arr, num, fill_value):
    result = np.empty_like(arr)
    if num > 0:
        result[:num] = fill_value
        result[num:] = arr[:-num]
    elif num < 0:
        result[num:] = fill_value
        result[:num] = arr[-num:]
    else:
        result[:] = arr
    return result

#shift each element two positions to the right (replace shifted elements with zero)
data_new = shift_elements(data, 2, 0)

Les exemples suivants montrent comment utiliser chaque méthode dans la pratique.

Méthode 1 : décaler les éléments (conserver tous les éléments d’origine)

Le code suivant montre comment utiliser la fonction np.roll() pour décaler chaque élément d’un tableau NumPy de deux positions vers la droite :

import numpy as np

#create NumPy array
data = np.array([1, 2, 3, 4, 5, 6])

#shift each element two positions to the right
data_new = np.roll(data, 2)

#view new NumPy array
data_new

array([5, 6, 1, 2, 3, 4])

Notez que chaque élément a été décalé de deux positions vers la droite et que les éléments à la fin du tableau ont simplement été déplacés vers l’avant.

Nous pourrions également utiliser un nombre négatif dans la fonction np.roll() pour décaler les éléments vers la gauche :

import numpy as np

#create NumPy array
data = np.array([1, 2, 3, 4, 5, 6])

#shift each element three positions to the left
data_new = np.roll(data, -3)

#view new NumPy array
data_new

array([4, 5, 6, 1, 2, 3])

Méthode 2 : décaler les éléments (autoriser le remplacement des éléments)

Nous pouvons également définir une fonction personnalisée pour décaler les éléments d’un tableau NumPy et permettre aux éléments décalés d’être remplacés par une certaine valeur.

Par exemple, nous pouvons définir la fonction suivante pour décaler les éléments et remplacer tous les éléments décalés par la valeur 0 :

import numpy as np

#create NumPy array
data = np.array([1, 2, 3, 4, 5, 6])

#define custom function to shift elements
def shift_elements(arr, num, fill_value):
    result = np.empty_like(arr)
    if num > 0:
        result[:num] = fill_value
        result[num:] = arr[:-num]
    elif num < 0:
        result[num:] = fill_value
        result[:num] = arr[-num:]
    else:
        result[:] = arr
    return result

#shift each element two positions to the right and replace shifted values with zero
data_new = shift_elements(data, 2, 0)

#view new NumPy array
data_new

array([0, 0, 1, 2, 3, 4])

On peut également utiliser un nombre négatif dans la fonction pour décaler les éléments vers la gauche :

import numpy as np

#create NumPy array
data = np.array([1, 2, 3, 4, 5, 6])

#define custom function to shift elements
def shift_elements(arr, num, fill_value):
    result = np.empty_like(arr)
    if num > 0:
        result[:num] = fill_value
        result[num:] = arr[:-num]
    elif num < 0:
        result[num:] = fill_value
        result[:num] = arr[-num:]
    else:
        result[:] = arr
    return result

#shift each element three positions to the left and replace shifted values with 50
data_new = shift_elements(data, -3, 50)

#view new NumPy array
data_new

array([ 4,  5,  6, 50, 50, 50])

Ressources additionnelles

Les didacticiels suivants expliquent comment effectuer d’autres opérations courantes dans NumPy :

Comment compter les occurrences d’éléments dans NumPy
Comment trier un tableau NumPy par colonne
Comment calculer le mode du tableau NumPy

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *