Bird
Raised Fist0
NumPydata~10 mins

np.newaxis for adding dimensions in NumPy - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - np.newaxis for adding dimensions
Start with 1D array
↓
Use np.newaxis to add axis
↓
Array shape changes
↓
New dimension added
↓
Result: Higher dimensional array
Start with a 1D array, apply np.newaxis to add a new dimension, resulting in a higher dimensional array.
Execution Sample
NumPy
import numpy as np
arr = np.array([1, 2, 3])
arr2d = arr[:, np.newaxis]
print(arr2d.shape)
print(arr2d)
This code adds a new axis to a 1D array to make it 2D with shape (3,1).
Execution Table
StepActionArray ShapeArray Content
1Create 1D array arr(3,)[1 2 3]
2Apply arr[:, np.newaxis](3, 1)[[1] [2] [3]]
3Print shape(3, 1)N/A
4Print array(3, 1)[[1] [2] [3]]
5EndN/AN/A
💡 Finished printing the new array with added dimension.
Variable Tracker
VariableStartAfter Step 2Final
arr[1 2 3][1 2 3][1 2 3]
arr2dN/A[[1] [2] [3]][[1] [2] [3]]
Key Moments - 2 Insights
Why does arr2d have shape (3, 1) instead of (1, 3)?
Because np.newaxis was used in the second dimension position (arr[:, np.newaxis]), it adds a new axis as a column, making shape (3,1). See execution_table step 2.
What happens if np.newaxis is used in the first dimension like arr[np.newaxis, :]?
It adds a new axis as the first dimension, changing shape to (1, 3). This is different from arr[:, np.newaxis].
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table at step 2, what is the shape of arr2d?
A(3,)
B(3, 1)
C(1, 3)
D(1,)
💡 Hint
Check the 'Array Shape' column at step 2 in execution_table.
At which step is the new axis added to the array?
AStep 2
BStep 1
CStep 3
DStep 4
💡 Hint
Look for the step where arr2d is created with shape (3, 1).
If we change arr2d = arr[np.newaxis, :], what would be the new shape?
A(3,)
B(3, 1)
C(1, 3)
D(1,)
💡 Hint
Recall that np.newaxis at the first dimension adds a new row dimension.
Concept Snapshot
np.newaxis adds a new dimension to numpy arrays.
Use it inside indexing like arr[:, np.newaxis] to add a column dimension.
This changes shape from (n,) to (n,1).
Use arr[np.newaxis, :] to add a row dimension, shape (1,n).
Useful for reshaping without copying data.
Full Transcript
We start with a 1D numpy array arr with shape (3,). Using np.newaxis inside indexing, like arr[:, np.newaxis], adds a new dimension. This changes the shape to (3, 1), turning the array into a 2D column vector. The variable arr2d holds this new array. Printing arr2d shows the new shape and content. This technique helps reshape arrays easily by adding dimensions where needed.

Practice

(1/5)
1. What does np.newaxis do when used inside array indexing?
easy
A. Changes the data type of the array elements
B. Deletes a dimension from the array
C. Flattens the array into one dimension
D. Adds a new dimension to the array without copying data

Solution

  1. Step 1: Understand the role of np.newaxis

    np.newaxis is used to add a new axis (dimension) to an existing array, increasing its dimensionality by one.
  2. Step 2: Confirm what np.newaxis does not do

    It does not remove dimensions, change data types, or flatten arrays.
  3. Final Answer:

    Adds a new dimension to the array without copying data -> Option D
  4. Quick Check:

    np.newaxis adds dimension = C [OK]
Hint: np.newaxis adds a dimension, never removes or flattens [OK]
Common Mistakes:
  • Thinking np.newaxis removes dimensions
  • Confusing np.newaxis with flattening
  • Assuming it changes data types
2. Which of the following is the correct syntax to add a new axis to a 1D numpy array a to make it a column vector?
easy
A. a[:, np.newaxis]
B. a[np.newaxis, :]
C. a[np.newaxis]
D. a[:, :np.newaxis]

Solution

  1. Step 1: Understand array shape and axis addition

    To convert a 1D array to a column vector, we add a new axis as the second dimension using a[:, np.newaxis].
  2. Step 2: Check each option

    a[np.newaxis, :] adds a new axis at the front, making a row vector (1, 3). a[np.newaxis] does the same, making a row vector (1, 3). a[:, :np.newaxis] runs but does not add a dimension since :np.newaxis is equivalent to :, keeping shape (3,).
  3. Final Answer:

    a[:, np.newaxis] -> Option A
  4. Quick Check:

    Column vector = a[:, np.newaxis] [OK]
Hint: Use a[:, np.newaxis] to add a column dimension [OK]
Common Mistakes:
  • Using np.newaxis in wrong position
  • Confusing row and column vector shapes
  • Syntax errors like a[:, :np.newaxis]
3. Given the code:
import numpy as np
arr = np.array([1, 2, 3])
new_arr = arr[:, np.newaxis]
print(new_arr.shape)

What is the output?
medium
A. (3, 1)
B. (1, 3)
C. (3,)
D. (1,)

Solution

  1. Step 1: Check original array shape

    The original array arr is 1D with shape (3,).
  2. Step 2: Adding new axis with arr[:, np.newaxis]

    This adds a new axis as the second dimension, changing shape to (3, 1).
  3. Final Answer:

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

    Shape after newaxis = (3, 1) [OK]
Hint: Adding np.newaxis in second position adds a new column dimension [OK]
Common Mistakes:
  • Confusing (1, 3) and (3, 1) shapes
  • Forgetting newaxis adds dimension, not removes
  • Assuming shape stays (3,)
4. What is wrong with this code snippet?
import numpy as np
arr = np.array([1, 2, 3])
new_arr = arr[np.newaxis:]
print(new_arr.shape)
medium
A. new_arr will have shape (3, 1)
B. new_arr will be a flattened array
C. Fails to add a new dimension due to incorrect slicing with np.newaxis
D. Code runs fine and adds a new axis

Solution

  1. Step 1: Analyze the slicing syntax

    The code uses arr[np.newaxis:], which does not cause SyntaxError but treats np.newaxis (alias for None) as slice start, equivalent to arr[:], so shape remains (3,).
  2. Step 2: Understand correct usage of np.newaxis

    np.newaxis must be used inside index brackets as a separate index, not as part of a slice.
  3. Final Answer:

    Fails to add a new dimension due to incorrect slicing with np.newaxis -> Option C
  4. Quick Check:

    np.newaxis must be separate index, not slice [OK]
Hint: np.newaxis is an index, not a slice; avoid np.newaxis: [OK]
Common Mistakes:
  • Using np.newaxis as part of slice syntax
  • Expecting code to run without error
  • Confusing np.newaxis with slice objects
5. You have a 2D numpy array data with shape (100, 50). You want to add a new dimension at the front to represent batch size 1, making the shape (1, 100, 50). Which code correctly does this using np.newaxis?
hard
A. data[np.newaxis:]
B. data[np.newaxis, :, :]
C. data[:, :, np.newaxis]
D. data[:, np.newaxis, :]

Solution

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

    Original shape is (100, 50). We want to add a new axis at the front to get (1, 100, 50).
  2. Step 2: Use np.newaxis at the front index

    Using data[np.newaxis, :, :] adds a new axis at position 0, resulting in shape (1, 100, 50).
  3. Step 3: Check other options

    data[np.newaxis:] does not add a new dimension (acts as slice data[:], shape (100,50)). data[:, np.newaxis, :] adds axis in middle (100, 1, 50), data[:, :, np.newaxis] adds axis at end (100, 50, 1).
  4. Final Answer:

    data[np.newaxis, :, :] -> Option B
  5. Quick Check:

    New axis front = data[np.newaxis, :, :] [OK]
Hint: Add np.newaxis at front index for batch dimension [OK]
Common Mistakes:
  • Adding newaxis in wrong position
  • Using fewer indices than array dimensions
  • Confusing axis order for 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