Shuffling arrays means mixing up the order of elements randomly. It helps when you want to avoid patterns or biases in data.
Shuffling arrays in NumPy
Start learning this pattern below
Jump into concepts and practice - no test required
import numpy as np # Create an array array = np.array([1, 2, 3, 4, 5]) # Shuffle the array in-place np.random.shuffle(array)
np.random.shuffle() changes the original array order directly (in-place).
It works only on the first axis for multi-dimensional arrays.
import numpy as np empty_array = np.array([]) np.random.shuffle(empty_array) print(empty_array)
import numpy as np single_element_array = np.array([42]) np.random.shuffle(single_element_array) print(single_element_array)
import numpy as np array = np.array([10, 20, 30, 40, 50]) np.random.shuffle(array) print(array)
import numpy as np multi_dim_array = np.array([[1, 2], [3, 4], [5, 6]]) np.random.shuffle(multi_dim_array) print(multi_dim_array)
This program shows the array before and after shuffling to see the change in order.
import numpy as np # Create an array of numbers 1 to 6 numbers = np.array([1, 2, 3, 4, 5, 6]) print("Before shuffling:", numbers) # Shuffle the array in-place np.random.shuffle(numbers) print("After shuffling:", numbers)
Time complexity is O(n), where n is the number of elements.
Space complexity is O(1) because shuffling happens in-place without extra arrays.
Common mistake: expecting np.random.shuffle() to return a new array. It does not; it changes the original array.
Use shuffling when you want to randomize data order. Use sampling if you want random elements without changing the original array.
Shuffling mixes array elements randomly to remove order bias.
np.random.shuffle() changes the array in-place and works on the first axis for multi-dimensional arrays.
It is useful for preparing data for machine learning and random sampling tasks.
Practice
np.random.shuffle() do to a NumPy array?Solution
Step 1: Understand the function purpose
np.random.shuffle()is designed to mix elements randomly within the array.Step 2: Check how it modifies the array
This function changes the original array directly (in-place), not creating a new one.Final Answer:
Randomly rearranges the elements of the array in-place -> Option AQuick Check:
Shuffle = random in-place rearrangement [OK]
- Thinking shuffle returns a new array
- Confusing shuffle with sorting
- Assuming shuffle reverses elements
arr?Solution
Step 1: Identify the correct function call
The shuffle function is inside thenp.randommodule, so it must be called asnp.random.shuffle().Step 2: Check the parameters
It takes the array as the only argument. The axis parameter is not valid for 1D arrays.Final Answer:
np.random.shuffle(arr) -> Option DQuick Check:
Correct shuffle syntax = np.random.shuffle(array) [OK]
- Using np.shuffle instead of np.random.shuffle
- Calling shuffle as a method on the array
- Passing axis parameter incorrectly
import numpy as np arr = np.array([1, 2, 3, 4, 5]) np.random.shuffle(arr) print(arr)
Solution
Step 1: Understand shuffle effect on array
np.random.shuffle(arr)rearranges elements randomly in-place, soarrchanges order.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.Final Answer:
A randomly shuffled version of [1 2 3 4 5] -> Option CQuick Check:
Shuffle output = random order of original array [OK]
- Expecting original order after shuffle
- Thinking shuffle returns a new array
- Assuming shuffle sorts or reverses
import numpy as np arr = np.array([[1, 2], [3, 4]]) np.random.shuffle(arr, axis=1) print(arr)
Solution
Step 1: Check shuffle function parameters
np.random.shuffle()only accepts the array argument; it does not have an axis parameter.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.Final Answer:
shuffle does not accept an axis argument -> Option AQuick Check:
shuffle axis param invalid = error [OK]
- Passing axis argument to shuffle
- Thinking shuffle returns a new array
- Believing shuffle only works on 1D arrays
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?Solution
Step 1: Understand shuffle on 2D arrays
np.random.shuffle()shuffles along the first axis (rows) in-place, which is what we want.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).Final Answer:
np.random.shuffle(data) -> Option BQuick Check:
Shuffle rows in-place = np.random.shuffle(data) [OK]
- Trying to shuffle columns by transposing
- Expecting shuffle to return a new array
- Passing axis parameter to shuffle
