Bird
Raised Fist0
NumPydata~10 mins

np.expand_dims() and np.squeeze() in NumPy - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - np.expand_dims() and np.squeeze()
Start with array
↓
Apply np.expand_dims(axis)
→Array shape increases by 1 dimension
↓
Apply np.squeeze()
→Remove all size 1 dimensions
↓
Resulting array with changed shape
Start with an array, add a new axis with np.expand_dims(), then remove size 1 axes with np.squeeze().
Execution Sample
NumPy
import numpy as np
arr = np.array([1, 2, 3])
expanded = np.expand_dims(arr, axis=0)
squeezed = np.squeeze(expanded)
Create 1D array, add a new axis at front, then remove all single-dimensional axes.
Execution Table
StepArray ShapeOperationResulting ShapeExplanation
1(3,)Start with arr(3,)Original 1D array with 3 elements
2(3,)np.expand_dims(arr, axis=0)(1, 3)Add new axis at front, shape becomes 2D
3(1, 3)np.squeeze(expanded)(3,)Remove size 1 axis, back to 1D array
💡 All operations complete, final array shape is (3,)
Variable Tracker
VariableStartAfter np.expand_dimsAfter np.squeeze
arr.shape(3,)(3,)(3,)
expanded.shapeN/A(1, 3)(1, 3)
squeezed.shapeN/AN/A(3,)
Key Moments - 3 Insights
Why does np.expand_dims increase the number of dimensions?
Because np.expand_dims inserts a new axis at the specified position, increasing the array's rank by 1 as shown in execution_table step 2.
Does np.squeeze remove all axes or only those with size 1?
np.squeeze only removes axes with size 1, leaving other dimensions unchanged, as seen in execution_table step 3.
What happens if np.squeeze is applied to an array with no size 1 axes?
The array shape stays the same because there are no size 1 axes to remove, so no change occurs.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the shape of 'expanded' after np.expand_dims at step 2?
A(3,)
B(1, 3)
C(3, 1)
D(1,)
💡 Hint
Check the 'Resulting Shape' column at step 2 in the execution_table.
At which step does the array shape return to (3,)?
AStep 3
BStep 2
CStep 1
DNever
💡 Hint
Look at the 'Resulting Shape' column and find when shape is (3,).
If np.expand_dims(arr, axis=1) was used instead of axis=0, what would be the shape after expansion?
A(1, 3)
B(3,)
C(3, 1)
D(1,)
💡 Hint
Adding axis=1 inserts a new dimension after the first dimension, changing shape accordingly.
Concept Snapshot
np.expand_dims(array, axis) adds a new axis at 'axis', increasing dimensions by 1.
np.squeeze(array) removes all axes of size 1.
Use expand_dims to prepare arrays for broadcasting or model input.
Use squeeze to remove unnecessary single dimensions.
Shapes change accordingly: expand_dims adds, squeeze removes size 1 axes.
Full Transcript
We start with a 1D numpy array of shape (3,). Using np.expand_dims with axis=0 adds a new dimension at the front, changing the shape to (1, 3). Then, applying np.squeeze removes all dimensions of size 1, returning the shape back to (3,). This process helps reshape arrays for different operations by adding or removing single-dimensional axes.

Practice

(1/5)
1. What does np.expand_dims() do to a NumPy array?
easy
A. Adds a new dimension at the specified axis
B. Removes all dimensions of size one
C. Flattens the array into one dimension
D. Changes the data type of the array

Solution

  1. Step 1: Understand the function purpose

    np.expand_dims() is used to add a new axis to an array, increasing its dimensions.
  2. Step 2: Compare with other options

    Removing dimensions or flattening is done by other functions like np.squeeze() or reshape(). Changing data type is unrelated.
  3. Final Answer:

    Adds a new dimension at the specified axis -> Option A
  4. Quick Check:

    np.expand_dims() = Adds dimension [OK]
Hint: Expand dims adds axis, squeeze removes axis [OK]
Common Mistakes:
  • Confusing expand_dims with squeeze
  • Thinking it changes data values
  • Assuming it flattens the array
2. Which of the following is the correct syntax to add a new axis at position 1 using np.expand_dims() on array a?
easy
A. np.expand_dims(a, axis=0)
B. np.expand_dims(a, 0)
C. np.expand_dims(a, axis=1)
D. np.expand_dims(a, axis=2)

Solution

  1. Step 1: Check the function signature

    np.expand_dims(array, axis) requires the axis parameter to specify where to add the new dimension.
  2. Step 2: Identify correct axis value

    Axis=1 adds the new dimension at position 1. np.expand_dims(a, 0) (positional) and np.expand_dims(a, axis=0) add the dimension at position 0. np.expand_dims(a, axis=2) causes an AxisError since valid axes are -2 to 1 for a 1D array.
  3. Final Answer:

    np.expand_dims(a, axis=1) -> Option C
  4. Quick Check:

    Use axis=1 to add dimension at position 1 [OK]
Hint: Use axis= to specify position clearly [OK]
Common Mistakes:
  • Omitting axis keyword and confusing position
  • Using wrong axis number
  • Mixing axis=0 and axis=1
3. What is the shape of the array after applying np.squeeze() to arr = np.array([[[1], [2], [3]]])?
medium
A. (3,)
B. (1, 3, 1)
C. (3, 1)
D. (3, 1, 1)

Solution

  1. Step 1: Check original shape

    arr has shape (1, 3, 1) because it is a 3D array with one element in first and last dimension.
  2. Step 2: Apply np.squeeze()

    np.squeeze() removes all dimensions of size 1, so the first and last dimensions are removed, leaving shape (3,).
  3. Final Answer:

    (3,) -> Option A
  4. Quick Check:

    squeeze removes size 1 dims = (3,) [OK]
Hint: Squeeze removes all size 1 dims from shape [OK]
Common Mistakes:
  • Assuming squeeze removes only one dimension
  • Confusing original shape with squeezed shape
  • Thinking squeeze flattens the array
4. Given arr = np.array([1, 2, 3]), which code will cause an error?
medium
A. np.expand_dims(arr, axis=-1)
B. np.expand_dims(arr, axis=0)
C. np.squeeze(arr)
D. np.expand_dims(arr, axis=3)

Solution

  1. Step 1: Check original array shape

    arr has shape (3,), so it has 1 dimension.
  2. Step 2: Validate axis values for expand_dims

    Valid axis values for adding a new dimension are between -2 and 1 (inclusive) because adding a dimension increases rank by 1. Axis=3 is out of bounds and causes an error.
  3. Final Answer:

    np.expand_dims(arr, axis=3) causes error -> Option D
  4. Quick Check:

    Axis out of range causes error [OK]
Hint: Axis must be in valid range for expand_dims [OK]
Common Mistakes:
  • Using axis larger than array ndim + 1
  • Confusing axis indexing with array shape
  • Assuming squeeze can cause error on 1D arrays
5. You have a 2D array data with shape (5, 1). You want to prepare it for a machine learning model that expects input shape (5,). Which code correctly reshapes data using np.squeeze() and np.expand_dims()?
hard
A. np.expand_dims(np.squeeze(data), axis=1)
B. np.squeeze(data)
C. np.squeeze(np.expand_dims(data, axis=-1))
D. np.expand_dims(data, axis=-1)

Solution

  1. Step 1: Understand the original shape and target shape

    data shape is (5, 1). The model expects (5,), so we need to remove the extra dimension.
  2. Step 2: Use np.squeeze() to remove size 1 dimension

    np.squeeze(data) removes the dimension of size 1, resulting in shape (5,). Adding dimensions again is unnecessary and would change shape incorrectly.
  3. Final Answer:

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

    Squeeze removes extra dims to match model input [OK]
Hint: Squeeze to remove size 1 dims for model input [OK]
Common Mistakes:
  • Adding dimensions instead of removing
  • Using expand_dims unnecessarily
  • Not matching model expected input shape
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard