Bird
Raised Fist0
NumPydata~20 mins

np.newaxis for adding dimensions in NumPy - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
np.newaxis Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of adding a new axis to a 1D array
What is the shape of the array b after adding a new axis using np.newaxis?
NumPy
import numpy as np

a = np.array([1, 2, 3])
b = a[:, np.newaxis]
print(b.shape)
A(3,)
B(3, 1)
C(1, 3)
D(1,)
Attempts:
2 left
💡 Hint
Think about how adding a new axis in the second position changes the shape.
❓ data_output
intermediate
2:00remaining
Resulting array after adding new axis
What is the output of the array b after adding a new axis?
NumPy
import numpy as np

a = np.array([4, 5, 6])
b = a[np.newaxis, :]
print(b)
A[[4 5 6]]
B
[4
 5
 6]
C
[[4]
 [5]
 [6]]
D[4 5 6]
Attempts:
2 left
💡 Hint
Adding np.newaxis at the start adds a new row dimension.
❓ visualization
advanced
2:30remaining
Visualizing shape changes with np.newaxis
Which option correctly describes the shape change when adding np.newaxis to a 2D array arr of shape (2, 3) as arr[:, :, np.newaxis]?
NumPy
import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6]])
new_arr = arr[:, :, np.newaxis]
print(new_arr.shape)
A(2, 3) - shape unchanged
B(2, 1, 3) - adds a new second dimension
C(1, 2, 3) - adds a new first dimension
D(2, 3, 1) - adds a new third dimension
Attempts:
2 left
💡 Hint
Adding np.newaxis at the end adds a new dimension at the last position.
🔧 Debug
advanced
2:00remaining
Identify the error when using np.newaxis incorrectly
What error will this code raise?
NumPy
import numpy as np

a = np.array([1, 2, 3])
b = a[np.newaxis, np.newaxis]
print(b.shape)
ASyntaxError: invalid syntax
BTypeError: unhashable type: 'slice'
C(1, 1, 3) - no error, shape is correct
DIndexError: too many indices for array
Attempts:
2 left
💡 Hint
Check how many dimensions the original array has and how many indices are used.
🚀 Application
expert
3:00remaining
Using np.newaxis to prepare data for broadcasting
Given two arrays a with shape (5,) and b with shape (3,), which option correctly uses np.newaxis to add dimensions so that a + b broadcasts to shape (5, 3)?
NumPy
import numpy as np

a = np.arange(5)
b = np.arange(3)

# Which option below correctly reshapes a and b for broadcasting?
Aa[:, np.newaxis] + b[np.newaxis, :]
Ba[np.newaxis, :] + b[:, np.newaxis]
Ca[:, np.newaxis] + b[:, np.newaxis]
Da[np.newaxis, :] + b[np.newaxis, :]
Attempts:
2 left
💡 Hint
Broadcasting works when dimensions are compatible or equal to 1.

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