**Problem Formulation**

Given two arrays of the same length but different orders. How will you shuffle the two arrays in unison?

Shuffling two arrays in unison means reordering the elements of both arrays in the same pattern. Let’s understand this with the help of an example.

**Example:**

Given:arr_1 = [[1, 1], [2, 2], [3, 3]] arr_2 = [1, 2, 3] Expected Output (After shuffling them in unison):arr_1_shuffled: `[[3 3] [1 1] [2 2]]` arr_2_shuffled: [3 1 2] |

Thus, in this tutorial, you will learn different ways of solving the mission-critical question of shuffling two given arrays in unison. So, without further delay, let us dive into the solutions.

## β‘**Method 1: **Using numpy.random.permutation

**Approach: **Call the `permutation()`

function of the numpy.random module and pass the length of the given arrays to this function. This returns a randomly permuted range of `0`

to `len(array)-1`

. Let’s say that the result is stored in a variable `shuffler`

. Then, use the square bracket notation as:

- arr_1_shuffled = arr_1[shuffler]
- arr_2_shuffled = arr_2[shuffler]

This allows you to shuffle the two arrays based on the value of `shuffler`

.

**Code:**

import numpy as np # Given arr_1 = np.array([[1, 1], [2, 2], [3, 3]]) arr_2 = np.array([1, 2, 3]) # shuffling the two arrays in unison shuffler = np.random.permutation(len(arr_1)) arr_1_shuffled = arr_1[shuffler] arr_2_shuffled = arr_2[shuffler] print(arr_1_shuffled) print(arr_2_shuffled)

**Output:**

[[3 3] [1 1] [2 2]] [3 1 2]

**NOTE**: In layman’s terms, permutation means the arrangement of elements. So, [30, 20, 10] is a permutation of [10, 20, 30] and vice-versa. The `permutation()`

method of the numpy.random module returns a re-arranged array while keeping the original array unchanged. The above solution is a mere use case of this function.

## β‘**Method 2: Using sklearn.utils.shuffle()**

Another way to approach the given problem is to use the `shuflle()`

method from the `sklearn.utils`

module. The *shuffle* method allows you to shuffle arrays and sparse matrices in a consistent way. You can pass the two arrays as `sklearn.utils.shuffle(arr_1, arr_2)`

, which shuffles them consistently and then returns a shuffled copy of each array.

**Code:**

import sklearn import numpy as np # Given arr_1 = np.array([[1, 1], [2, 2], [3, 3]]) arr_2 = np.array([1, 2, 3]) # shuffling the two arrays in unison arr_1_shuffled, arr_2_shuffled = sklearn.utils.shuffle(arr_1, arr_2) print(arr_1_shuffled) print(arr_2_shuffled)

**Output:**

[[3 3] [2 2] [1 1]] [3 2 1]

## β‘**Method 3: Using numpy.random.shuffle**

Another similar function that facilitates you with the ability to shuffle the given arrays is the shuffle method from the `numpy.random`

module. It takes a sequence as an input and shuffles the elements in it to return a rearranged version of the original sequence. Note that the shuffle method changes the original sequence itself.

**Approach:**

- Create an array that contains elements within the range 0 to len(array) – 1 using
`np.arange(len(arr_1))`

. In this case, the created array will be [0 1 2]. - Now shuffle the above array using the shuffle method, which re-arranges the elements of the array. Let’s say that after shuffling the above array, it looks as follows: [2 1 0]. This array can now be used as an index to shuffle the two arrays.

**Code:**

import numpy as np # Given arr_1 = np.array([[1, 1], [2, 2], [3, 3]]) arr_2 = np.array([1, 2, 3]) # shuffling the two arrays in unison shuffled = np.arange(len(arr_1)) np.random.shuffle(shuffled) print(arr_1[shuffled]) print(arr_2[shuffled])

**Output:**

[[3 3] [2 2] [1 1]] [3 2 1]

## π§¨**Coding Challenge**

Before we wrap up here’s a coding challenge for you to sharpen your coding skills.

Given an array `nums`

consisting of **2n** elements in the form **[x1, x2,β¦,xn, y1, y2,β¦, yn**].

Return the array in the form **[x1, y1, x2, y2,β¦, xn, yn].**

**Constraints:**

`1 <= n <= 500`

`nums.length == 2n`

`1 <= nums[i] <= 10^3`

**Example:**Input: nums = [2, 5, 1, 3, 4, 7], n = 3

Output: [2, 3, 5, 4, 1, 7]

**Explanation:**Since x1 = 2, x2 = 5, x3 = 1, y1 = 3, y2 = 4, y3 = 7 so the answer is [2, 3, 5, 4, 1, 7].

Before you see the solution, it is highly recommended that you try to solve it yourself.

**Solution:**

def shuffle_array(nums, n): shuffled = [] for i in range(n): shuffled.append(nums[i]) shuffled.append(nums[i + n]) return shuffled nums = [2, 5, 1, 3, 4, 7] n = 3 print(shuffle_array(nums, n))

Well! If you want to dive deep into the problem, here’s the link that will guide you through a detailed list of solutions to the given coding challenge – **[Google Interview] Shuffle the Array**

## Conclusion

In this tutorial, we have learned three different ways of shuffling two given arrays in unison. I hope this helped you. Please **subscribe** and stay tuned for more interesting tutorials and discussions. Happy coding! π

**Recommended Read: **

**Recommended: ****Finxter Computer Science Academy**

- One of the most sought-after skills on Fiverr and Upwork is
**web scraping**. Make no mistake:is a critical life skill in todayβs world thatβs shaped by the web and remote work.**extracting data programmatically from websites** - So, do you want to master the art of web scraping using Pythonβs BeautifulSoup?
- If the answer is yes β this course will take you from beginner to expert in Web Scraping.