Related Articles
Shuffle an array in Python
• Last Updated : 12 Nov, 2020

Shuffling a sequence of numbers have always been a useful utility, it is nothing but rearranging the elements in an array. Knowing more than one method to achieve this can always be a plus. Let’s discuss certain ways in which this can be achieved.

Method 1: In this method we use shuffle() method from numpy library.

## Python3

 `# Import required module``import` `numpy as np`` ` `# Assign array``arr ``=` `np.array([``1``, ``2``, ``3``, ``4``, ``5``, ``6``])`` ` `# Display original array``print``(``"Original array: "``, arr)`` ` `# Shuffle array``np.random.shuffle(arr)`` ` `# Display shuffled array``print``(``"Shuffled array: "``, arr)`

Output

```Original array:  [1 2 3 4 5 6]
Shuffled array:  [4 1 5 3 2 6]
```

Method 2: In this method we will use shuffle() method from Random library to shuffle the given array.

## Python3

 `# Import required module``import` `random``import` `array`` ` `# Assign array``arr ``=` `np.array([``1``, ``2``, ``3``, ``4``, ``5``, ``6``])`` ` `# Display original array``print``(``"Original array: "``, arr)`` ` `# Shuffle array``random.shuffle(arr)`` ` `# Display shuffled array``print``(``"Shuffled array: "``, arr)`

Output:

```Original array:  [1 2 3 4 5 6]
Shuffled array:  [4 5 2 6 1 3]```

Method 3: In this method we will use sample() method from Random library to shuffle the given array.

## Python3

 `# Import required module``import` `random``import` `array`` ` `# Assign array``# here q indicates that the array``# contains signed integer``arr ``=` `array.array(``'q'``, [``1``, ``2``, ``3``, ``4``, ``5``, ``6``])`` ` `# Display original array``print``(``"Original array: "``, arr)`` ` `# Shuffle array``# Here sample() returns a list, so we``# are typecasting list into array``arr ``=` `array.array(``'q'``, random.sample(``list``(arr), ``6``))`` ` `# Display shuffled array``print``(``"Shuffled array: "``, arr)`

Output:

```Original array:  array('q', [1, 2, 3, 4, 5, 6])
Shuffled array:  array('q', [6, 3, 2, 1, 5, 4])```

Method 4: In this method we will select 2 indices randomly and then swap them. This process will be randomly repeated up to n/2 to n times, Where n is the length of array.

## Python3

 `# Import required module``import` `random``import` `array`` ` ` ` ` ` `# Create class to shuffle array``class` `Shuffler(``object``):`` ` `    ``# Constreuctor``    ``def` `__init__(``self``, arr):`` ` `        ``# Initializes the temp_array``        ``self``.temp_array ``=` `arr`` ` `        ``# All the indices are stored in indices list``        ``self``.indices ``=` `[index ``for` `index ``in` `range``(``len``(arr))]`` ` `    ``# mehtod to shuffle array``    ``def` `shuffle(``self``):`` ` `        ``# if length of array is zero empty array is returned.``        ``if` `not` `len``(``self``.temp_array):``            ``return` `[]`` ` `        ``# The below swapping process is repeatd randomly in range of ``        ``# half of length of array to length of the array, in this case, ``        ``# it is repeated randomly in between 3 to 6 times.``        ``for` `i ``in` `range``(random.randint(``int``(``len``(``self``.temp_array)``/``2``), ``len``(``self``.temp_array))):`` ` `            ``# randomly choses two indices that is i, j from indices list``            ``i ``=` `random.choice(``self``.indices)``            ``j ``=` `random.choice(``self``.indices)`` ` `            ``# swapping the elements present at i,j indices.``            ``self``.temp_array[i], ``self``.temp_array[j] ``=` `self``.temp_array[j], ``self``.temp_array[i]``        ``return` `self``.temp_array`` ` ` ` ` ` `# Driver code`` ` `# Assign array``arr ``=` `array.array(``'q'``, [``1``, ``2``, ``3``, ``4``, ``5``, ``6``])`` ` `# Create Object of Shuffler class``ob ``=` `Shuffler(arr)`` ` `# Display original array``print``(``"Original array: "``, arr)`` ` `# Shuffle method is called``print``(``"Shuffled array: "``, ob.shuffle())`

Output:

```Original array:  array('q', [1, 2, 3, 4, 5, 6])
Shuffled array:  array('q', [1, 6, 3, 2, 4, 5])```

Method 5: This is the one of the most efficient methods, it is the Fisher–Yates shuffle Algorithm. Below program will help you understand this algorithm.

## Python3

 `# Import required module``import` `random``import` `numpy as np`` ` ` ` `# A function to generate a random ``# permutation of array``def` `shuffler (arr, n):``     ` `    ``# We will Start from the last element ``    ``# and swap one by one.``    ``for` `i ``in` `range``(n``-``1``,``0``,``-``1``):``         ` `        ``# Pick a random index from 0 to i``        ``j ``=` `random.randint(``0``,i``+``1``)``         ` `        ``# Swap arr[i] with the element at random index``        ``arr[i],arr[j] ``=` `arr[j],arr[i]``    ``return` `arr`` ` `   ` `   ` `# Driver code``     ` `# Assign array``arr ``=` `np.array([``1``, ``2``, ``3``, ``4``, ``5``, ``6``])`` ` `# Display original array``print``(``"Original array: "``,arr)`` ` `# Get length of array``n ``=` `len``(arr)`` ` `# Use shuffler() function to get shuffled array``print``(``"Shuffled array: "``,shuffler(arr, n))`

Output:

```Original array:  [1 2 3 4 5 6]
Shuffled array:  [6 1 2 3 4 5]```

Attention geek! Strengthen your foundations with the Python Programming Foundation Course and learn the basics.

To begin with, your interview preparations Enhance your Data Structures concepts with the Python DS Course.

My Personal Notes arrow_drop_up