Tableau de décalage Python NumPy

Muhammad Maisam Abbas 30 janvier 2023
  1. NumPy Shift Array avec la méthode np.roll()
  2. NumPy Shift Array avec la méthode de découpage en Python
  3. NumPy Shift Array avec fonction shift() dans la bibliothèque scipy.ndimage.interpolation en Python
Tableau de décalage Python NumPy

Ce tutoriel présentera des méthodes pour déplacer un tableau NumPy.

NumPy Shift Array avec la méthode np.roll()

Si nous voulons décaler à droite ou à gauche les éléments d’un tableau NumPy, nous pouvons utiliser la méthode numpy.roll() en Python. La méthode numpy.roll() est utilisée pour dérouler les éléments du tableau le long d’un axe spécifié. Il prend le tableau et le nombre d’endroits où nous voulons déplacer les éléments du tableau et renvoie le tableau décalé. Si nous voulons décaler les éléments vers la droite, nous devons utiliser un entier positif comme valeur de décalage. Si nous voulons décaler les éléments vers la gauche, nous devons spécifier une valeur de décalage négative. L’exemple de code suivant montre comment déplacer les éléments d’un tableau avec la méthode numpy.roll().

import numpy as np

array = np.array([1, 2, 3, 4, 5])

array_new = np.roll(array, 3)
print(array_new)

Production:

[3 4 5 1 2]

Nous avons d’abord créé le tableau avec la fonction np.array(). Nous avons ensuite décalé les éléments vers la droite avec la fonction np.roll() et stocké le tableau résultant dans array_new.

NumPy Shift Array avec la méthode de découpage en Python

Si nous voulons décaler les éléments vers la droite ou la gauche et remplacer les indices décalés par une valeur constante, nous devons utiliser la méthode de découpage de tableau en Python. Nous pouvons créer un nouveau tableau vide tout comme notre tableau d’origine. Si la valeur de décalage est positive, nous remplissons le côté gauche du tableau avec la valeur constante, et si la valeur de décalage est négative, nous remplissons le côté droit du tableau avec la valeur constante. Nous pouvons ensuite remplir les indices restants de notre nouveau tableau avec les valeurs du tableau d’origine. L’exemple de code suivant montre comment déplacer des éléments d’un tableau avec la méthode de découpage de tableau.

import numpy as np

array = np.array([1, 2, 3, 4, 5])
num = -3
fill_value = 0


def shift(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
    print(result)


shift(array, num, fill_value)

Production:

[4 5 0 0 0]

Nous avons défini la fonction shift() qui décale les éléments de notre tableau de trois places vers la gauche en utilisant la méthode de découpage de tableau dans le code ci-dessus. Nous avons d’abord créé notre tableau d’origine avec la méthode np.array(). Nous avons ensuite spécifié le nombre d’indices num que nous voulons déplacer nos éléments de tableau et la valeur constante fill_value avec laquelle nous voulons remplacer tous les indices décalés. En fin de compte, nous avons passé ces valeurs à la fonction shift() qui crée un nouveau tableau result comme notre tableau d’origine avec la fonction np.empty_like(arr), stocke les éléments décalés et imprime le tableau décalé.

NumPy Shift Array avec fonction shift() dans la bibliothèque scipy.ndimage.interpolation en Python

La méthode shift() à l’intérieur de la bibliothèque scipy.ndimage.interpolation est utilisée pour déplacer le tableau à l’aide de la méthode d’interpolation spline en Python. Contrairement à la méthode numpy.roll(), la méthode shift() peut décaler le tableau et remplacer simultanément les indices décalés par une valeur constante spécifiée. La fonction shift() prend le tableau d’origine, le nombre d’indices que nous voulons déplacer et la valeur constante que nous voulons remplacer par les indices décalés comme paramètres d’entrée et renvoie le tableau décalé où chaque index décalé est remplacé par le spécifié valeur constante. L’exemple de code suivant nous montre comment décaler les éléments d’un tableau avec la fonction shift().

import numpy as np
from scipy.ndimage.interpolation import shift

array = np.array([1, 2, 3, 4, 5])

result = shift(array, 3, cval=0)
print(result)

Production:

[0 0 0 1 2]

Nous avons décalé les éléments du tableau de trois places vers la droite et remplacé les indices décalés par 0 en utilisant la fonction shift() dans le code ci-dessus. Nous avons d’abord créé notre tableau avec la fonction np.array(). Nous avons ensuite utilisé la fonction shift pour décaler le tableau vers la droite de 3 places et remplacer les trois premiers indices du tableau d’origine par la valeur constante 0. Nous avons stocké la sortie de la fonction shift() dans le tableau result. Au final, nous avons imprimé les valeurs à l’intérieur du tableau result.

Toutes ces méthodes fonctionnent très bien. Si nous voulons uniquement décaler les valeurs à l’intérieur du tableau et ne voulons pas remplacer les indices décalés par une valeur constante, nous devons utiliser la fonction numpy.roll(). D’autre part, si nous voulons remplacer les indices décalés par une valeur constante spécifique, la méthode de découpage de tableau est la méthode la plus rapide pour cette opération. La méthode de découpage de tableau est plus rapide, mais elle est un peu plus compliquée que d’utiliser la fonction shift() dans la bibliothèque scipy. Si nous ne nous soucions pas des performances de notre code, nous pouvons utiliser la fonction shift() pour cette tâche.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

Article connexe - NumPy Array