Desplazar o rotar un array en Python

Muhammad Waiz Khan 30 enero 2023
  1. Shift Array en Python usando el módulo collections
  2. Shift Array en Python usando el método numpy.roll()
  3. Desplazar un array en Python usando la función rotar arrays
Desplazar o rotar un array en Python

Este artículo explicará cómo desplazar o rotar un array en la dirección izquierda o derecha en Python. Rotar un array significa que movemos o desplazamos cada valor del array hacia el lado izquierdo o derecho en n posiciones. Y los elementos más a la derecha o a la izquierda se mueven al otro extremo del array.

Podemos cambiar o rotar un array en Python utilizando varios métodos que se explican a continuación.

Shift Array en Python usando el módulo collections

Podemos usar el método deque.rotate(n) del módulo collections para rotar un array en Python. El método deque.rotate(n) rota el objeto de la clase deque en n posiciones, donde el signo de n indica si rotar el deque en dirección izquierda o derecha.

Si el valor de n es positivo, la entrada girará de izquierda a derecha, y si n es negativo, la entrada girará de derecha a izquierda. El siguiente código demuestra cómo rotar un array usando el método deque.rotate(n) en Python.

from collections import deque

myarray = deque([1, 2, 3, 4, 5, 6])
myarray.rotate(2)  # rotate right
print(list(myarray))
myarray.rotate(-3)  # rotate left
print(list(myarray))

Producción :

[5, 6, 1, 2, 3, 4]
[2, 3, 4, 5, 6, 1]

Shift Array en Python usando el método numpy.roll()

El método numpy.roll(array, shift, axis) toma el array como entrada y la gira a las posiciones iguales al valor de shift. Si el array es un arreglo bidimensional, necesitaremos especificar en qué eje necesitamos aplicar la rotación; de lo contrario, el método numpy.roll() aplicará la rotación en ambos ejes.

Al igual que el método deque.rotate(), el numpy.roll() también giral array de derecha a izquierda si el valor es positivo y de derecha a izquierda si el valor es negativo. El siguiente código de ejemplo muestra cómo rotar un array en Python utilizando el método numpy.roll().

import numpy as np

myarray = np.array([1, 2, 3, 4, 5, 6])
newarray = np.roll(myarray, 2)  # rotate right
print(newarray)
newarray = np.roll(myarray, -2)  # rotate left
print(newarray)

Producción :

[5 6 1 2 3 4]
[3 4 5 6 1 2]

Desplazar un array en Python usando la función rotar arrays

También podemos implementar la función de rotación usando el corte de matriz en Python. Este método no necesita ninguna biblioteca adicional pero es menos eficiente que los métodos explicados anteriormente.

El siguiente código de ejemplo demuestra cómo usar el corte de matriz para rotar o desplazar un array en Python.

def rotate(input, n):
    return input[n:] + input[:n]


myarray = [1, 3, 5, 7, 9]
print(rotate(myarray, 2))  # rotate left
print(rotate(myarray, -2))  # rotate right

Producción :

[5, 7, 9, 1, 3]
[7, 9, 1, 3, 5]

Artículo relacionado - Python Array