Bird
Raised Fist0
NumPydata~20 mins

Shuffling arrays in NumPy - Practice Problems & Coding Challenges

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Challenge - 5 Problems
🎖️
Shuffle Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output of this numpy shuffle code?

Consider the following code that shuffles a numpy array. What will be the output?

NumPy
import numpy as np
np.random.seed(0)
arr = np.array([1, 2, 3, 4, 5])
np.random.shuffle(arr)
print(arr.tolist())
A[2, 5, 1, 4, 3]
B[4, 1, 3, 5, 2]
C[5, 4, 1, 3, 2]
D[3, 5, 2, 4, 1]
Attempts:
2 left
💡 Hint

Remember that np.random.shuffle shuffles the array in place and the seed fixes the random order.

❓ data_output
intermediate
1:30remaining
How many elements remain in the array after shuffling?

Given this code, how many elements does the array arr have after shuffling?

NumPy
import numpy as np
arr = np.arange(10)
np.random.shuffle(arr)
print(len(arr))
A0
B9
C10
D1
Attempts:
2 left
💡 Hint

Shuffling changes order but not size.

🔧 Debug
advanced
2:00remaining
What error does this code raise?

What error will this code raise when trying to shuffle a tuple?

NumPy
import numpy as np
t = (1, 2, 3, 4)
np.random.shuffle(t)
ATypeError: 'tuple' object does not support item assignment
BValueError: cannot shuffle immutable sequence
CAttributeError: 'tuple' has no attribute 'shuffle'
DNo error, it shuffles the tuple
Attempts:
2 left
💡 Hint

Think about whether tuples can be changed in place.

🚀 Application
advanced
2:30remaining
Which code correctly shuffles rows of a 2D numpy array?

You have a 2D numpy array representing data rows. Which code correctly shuffles the rows but keeps columns intact?

NumPy
import numpy as np
np.random.seed(1)
arr = np.array([[1, 2], [3, 4], [5, 6], [7, 8]])
Anp.random.shuffle(arr)
Barr = np.random.shuffle(arr.T)
Cnp.random.permutation(arr)
Darr = np.random.shuffle(arr)
Attempts:
2 left
💡 Hint

Remember np.random.shuffle shuffles in place and returns None.

🧠 Conceptual
expert
3:00remaining
Why does np.random.shuffle behave differently on multi-dimensional arrays compared to np.random.permutation?

Choose the best explanation for the difference in behavior between np.random.shuffle and np.random.permutation when applied to multi-dimensional numpy arrays.

A<code>np.random.shuffle</code> only works on 1D arrays, while <code>np.random.permutation</code> works on any dimension.
B<code>np.random.shuffle</code> shuffles all axes randomly, while <code>np.random.permutation</code> only shuffles the first axis.
C<code>np.random.shuffle</code> returns a new shuffled array, while <code>np.random.permutation</code> shuffles in place.
D<code>np.random.shuffle</code> shuffles only the first axis in place, while <code>np.random.permutation</code> returns a new shuffled copy of the entire array.
Attempts:
2 left
💡 Hint

Think about in-place vs returning new arrays and which axis is shuffled.

Practice

(1/5)
1. What does np.random.shuffle() do to a NumPy array?
easy
A. Randomly rearranges the elements of the array in-place
B. Sorts the array elements in ascending order
C. Creates a new shuffled copy of the array without changing the original
D. Reverses the order of elements in the array

Solution

  1. Step 1: Understand the function purpose

    np.random.shuffle() is designed to mix elements randomly within the array.
  2. Step 2: Check how it modifies the array

    This function changes the original array directly (in-place), not creating a new one.
  3. Final Answer:

    Randomly rearranges the elements of the array in-place -> Option A
  4. Quick Check:

    Shuffle = random in-place rearrangement [OK]
Hint: Shuffle mixes elements inside the same array [OK]
Common Mistakes:
  • Thinking shuffle returns a new array
  • Confusing shuffle with sorting
  • Assuming shuffle reverses elements
2. Which of the following is the correct syntax to shuffle a 1D NumPy array named arr?
easy
A. np.random.shuffle(arr, axis=1)
B. np.shuffle(arr)
C. arr.shuffle()
D. np.random.shuffle(arr)

Solution

  1. Step 1: Identify the correct function call

    The shuffle function is inside the np.random module, so it must be called as np.random.shuffle().
  2. Step 2: Check the parameters

    It takes the array as the only argument. The axis parameter is not valid for 1D arrays.
  3. Final Answer:

    np.random.shuffle(arr) -> Option D
  4. Quick Check:

    Correct shuffle syntax = np.random.shuffle(array) [OK]
Hint: Use np.random.shuffle(array) to shuffle in-place [OK]
Common Mistakes:
  • Using np.shuffle instead of np.random.shuffle
  • Calling shuffle as a method on the array
  • Passing axis parameter incorrectly
3. What will be the output of the following code?
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
np.random.shuffle(arr)
print(arr)
medium
A. [1 2 3 4 5]
B. [5 4 3 2 1]
C. A randomly shuffled version of [1 2 3 4 5]
D. Error because shuffle returns a new array

Solution

  1. Step 1: Understand shuffle effect on array

    np.random.shuffle(arr) rearranges elements randomly in-place, so arr changes order.
  2. Step 2: Predict output of print

    Since shuffle is random, the printed array will be a shuffled version of the original, not sorted or reversed.
  3. Final Answer:

    A randomly shuffled version of [1 2 3 4 5] -> Option C
  4. Quick Check:

    Shuffle output = random order of original array [OK]
Hint: Shuffle changes order randomly, output varies each run [OK]
Common Mistakes:
  • Expecting original order after shuffle
  • Thinking shuffle returns a new array
  • Assuming shuffle sorts or reverses
4. Identify the error in the following code snippet:
import numpy as np
arr = np.array([[1, 2], [3, 4]])
np.random.shuffle(arr, axis=1)
print(arr)
medium
A. shuffle does not accept an axis argument
B. arr must be 1D to shuffle
C. shuffle returns a new array, so assignment is needed
D. np.random.shuffle cannot shuffle 2D arrays

Solution

  1. Step 1: Check shuffle function parameters

    np.random.shuffle() only accepts the array argument; it does not have an axis parameter.
  2. Step 2: Understand shuffle behavior on 2D arrays

    Shuffle works in-place on the first axis of multi-dimensional arrays by default, no axis argument needed.
  3. Final Answer:

    shuffle does not accept an axis argument -> Option A
  4. Quick Check:

    shuffle axis param invalid = error [OK]
Hint: np.random.shuffle has no axis parameter [OK]
Common Mistakes:
  • Passing axis argument to shuffle
  • Thinking shuffle returns a new array
  • Believing shuffle only works on 1D arrays
5. You have a 2D NumPy array representing 5 samples with 3 features each:
data = np.array([[10, 20, 30],
                 [40, 50, 60],
                 [70, 80, 90],
                 [15, 25, 35],
                 [45, 55, 65]])
You want to shuffle the samples (rows) but keep the feature order intact. Which code correctly does this?
hard
A. np.random.shuffle(data.T)
B. np.random.shuffle(data)
C. np.random.permutation(data)
D. np.random.shuffle(data, axis=1)

Solution

  1. Step 1: Understand shuffle on 2D arrays

    np.random.shuffle() shuffles along the first axis (rows) in-place, which is what we want.
  2. Step 2: Evaluate other options

    np.random.shuffle(data.T) shuffles columns (wrong axis), np.random.permutation(data) returns a new shuffled array (not in-place), np.random.shuffle(data, axis=1) is invalid (axis param not accepted).
  3. Final Answer:

    np.random.shuffle(data) -> Option B
  4. Quick Check:

    Shuffle rows in-place = np.random.shuffle(data) [OK]
Hint: Shuffle rows by calling np.random.shuffle on 2D array [OK]
Common Mistakes:
  • Trying to shuffle columns by transposing
  • Expecting shuffle to return a new array
  • Passing axis parameter to shuffle