November 5, 2024

Different Methods of Array Rotation in Python

Array rotation involves moving elements of an array (or list) around in a specific order. In Python, there are several methods to rotate an array, each suitable for different use cases. Below are some common methods:

1. Using Slicing

Slicing is a simple and efficient way to rotate an array. You can achieve this by using list slicing:

def rotate_array(arr, k):
    # Rotate array to the right by k steps
    return arr[-k:] + arr[:-k]

# Example usage
array = [1, 2, 3, 4, 5]
rotated_array = rotate_array(array, 2)
print(rotated_array)  # Output: [4, 5, 1, 2, 3]
    

2. Using a Queue

A queue can be used to rotate an array by enqueuing and dequeuing elements:

from collections import deque

def rotate_array(arr, k):
    d = deque(arr)
    d.rotate(k)
    return list(d)

# Example usage
array = [1, 2, 3, 4, 5]
rotated_array = rotate_array(array, 2)
print(rotated_array)  # Output: [4, 5, 1, 2, 3]
    

3. Using a Loop

Manually rotating an array with a loop involves shifting elements one at a time:

def rotate_array(arr, k):
    n = len(arr)
    k = k % n  # Handle cases where k > len(arr)
    for _ in range(k):
        arr.insert(0, arr.pop())
    return arr

# Example usage
array = [1, 2, 3, 4, 5]
rotated_array = rotate_array(array, 2)
print(rotated_array)  # Output: [4, 5, 1, 2, 3]
    

4. Using NumPy

If you are using NumPy, you can leverage its built-in functions for efficient rotation:

import numpy as np

def rotate_array(arr, k):
    return np.roll(arr, k)

# Example usage
array = np.array([1, 2, 3, 4, 5])
rotated_array = rotate_array(array, 2)
print(rotated_array)  # Output: [4 5 1 2 3]
    

5. Using List Comprehension

You can also use list comprehension for a more concise approach:

def rotate_array(arr, k):
    n = len(arr)
    k = k % n  # Handle cases where k > len(arr)
    return [arr[(i - k) % n] for i in range(n)]

# Example usage
array = [1, 2, 3, 4, 5]
rotated_array = rotate_array(array, 2)
print(rotated_array)  # Output: [4, 5, 1, 2, 3]
    

6. Conclusion

Each method for rotating an array in Python has its own use cases and performance characteristics. Slicing is straightforward for small arrays, while NumPy offers efficiency for large datasets. Choosing the right method depends on the specific requirements of your application.