Desplazar o rotar un array en Python
-
Shift Array en Python usando el módulo
collections
-
Shift Array en Python usando el método
numpy.roll()
- Desplazar un array en Python usando la función rotar arrays
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]