Shuffle an array in Python
Last Updated :
15 Sep, 2022
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.
Using shuffle() method from numpy library
Here we are using the shuffle() method from numpy library to shuffle an array in Python.
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]
Using shuffle() method from Random library to shuffle the given array.
Here we are using shuffle method from the built-in random module to shuffle the entire array at once.
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]
Using sample() method to shuffle an array
Here we are using the sample method from the random library to shuffle an 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])
Selecting random indices and swapping them
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):
# Constructor
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))]
# method 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
# repeated 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])
Using Fisher-Yates Shuffle Algorithm to shuffle an array
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]
Selecting random indices and storing in a new list
In this method we will randomly select an index and append it to end of the array. this will be repeated for n time where n is length of array.
Python3
import random
arr=[1,2,3,4,5,6]
n=len(arr)-1
for i in range(n):
random_index = random.randint(0, n)
temp = arr.pop(random_index)
arr.append(temp)
print(arr)
Output:
[3, 5, 4, 6, 2, 1]
Similar Reads
Python | Reverse a numpy array
As we know Numpy is a general-purpose array-processing package that provides a high-performance multidimensional array object, and tools for working with these arrays. Let's discuss how can we reverse a Numpy array. Using flip() function to Reverse a Numpy array The numpy.flip() function reverses t
2 min read
Shuffling Images in Python
In this article, we will learn how to shuffle an image using the image_shuffler package in Python. Image_shuffler package in Python This library is used to split an image into 'n' no. of parts and then shuffle it. Before going to dive into the topic first, we need to set up the python environment a
2 min read
Declaring an Array in Python
An array is a container used to store the same type of elements such as integer, float, and character type. An Array is one of the most important parts of data structures. In arrays, elements are stored in a contiguous location in a memory. We can access the array elements by indexing from 0 to (siz
4 min read
Ways to shuffle a list in Python
Shuffling a list means rearranging its elements in a random order. For example, if you have a list a = [1, 2, 3, 4, 5], shuffling it might result in [3, 1, 5, 2, 4]. Letâs explore the most efficient and commonly used methods to shuffle a list in Python.Using random.shuffle()random.shuffle() function
2 min read
Shuffle a deck of card with OOPS in Python
The objective is to distribute a deck of cards among two players. The code for the Shuffle Deck of Cards in Python can be used to shuffle the cards. The shuffle method, which is a built-in feature of the random library, is used to mix and randomize the order of the data before printing it. Prerequis
3 min read
random.shuffle() function in Python
The shuffle() is an inbuilt method of the random module. It is used to shuffle a sequence (list). Shuffling a list of objects means changing the position of the elements of the sequence using Python. Syntax of random.shuffle()Â The order of the items in a sequence, such as a list, is rearranged usin
2 min read
numpy.random.shuffle() in python
With the help of numpy.random.shuffle() method, we can get the random positioning of different integer values in the numpy array or we can say that all the values in an array will be shuffled randomly. Syntax : numpy.random.shuffle(x) Return : Return the reshuffled numpy array. Example #1 : In this
1 min read
Ways to shuffle a Tuple in Python
Shuffling numbers can sometimes prove to be a great help while programming practices. This process can be directly implemented on the data structures which are mutable like lists, but as we know that the tuples are immutable so it cannot be shuffled directly. If you'll try to do so as done in the be
2 min read
Python Lists VS Numpy Arrays
Here, we will understand the difference between Python List and Python Numpy array. What is a Numpy array?NumPy is the fundamental package for scientific computing in Python. Numpy arrays facilitate advanced mathematical and other types of operations on large numbers of data. Typically, such operati
7 min read
Shuffle a given Pandas DataFrame rows
Let us see how to shuffle the rows of a DataFrame. We will be using the sample() method of the pandas module to randomly shuffle DataFrame rows in Pandas. Example 1: Python3 # import the module import pandas as pd # create a DataFrame data = {'Name': ['Mukul', 'Rohan', 'Mayank', 'Shubham', 'Aakash']
1 min read