Bird
Raised Fist0
NumPydata~20 mins

Broadcasting with higher dimensions in NumPy - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Broadcasting Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of broadcasting addition with 3D and 2D arrays
What is the output of the following code snippet?
NumPy
import numpy as np

A = np.ones((2,3,4))
B = np.arange(4)
result = A + B
print(result)
A
[[[1. 2. 3. 4.]
  [2. 3. 4. 5.]
  [3. 4. 5. 6.]]

 [[1. 2. 3. 4.]
  [2. 3. 4. 5.]
  [3. 4. 5. 6.]]]
B
[[[1. 1. 1. 1.]
  [2. 3. 4. 5.]
  [3. 4. 5. 6.]]

 [[1. 1. 1. 1.]
  [2. 3. 4. 5.]
  [3. 4. 5. 6.]]]
C
[[[1. 2. 3. 4.]
  [1. 2. 3. 4.]
  [1. 2. 3. 4.]]

 [[2. 3. 4. 5.]
  [2. 3. 4. 5.]
  [2. 3. 4. 5.]]]
D
[[[1. 2. 3. 4.]
  [1. 2. 3. 4.]
  [1. 2. 3. 4.]]

 [[1. 2. 3. 4.]
  [1. 2. 3. 4.]
  [1. 2. 3. 4.]]]
Attempts:
2 left
💡 Hint
Remember how numpy broadcasts arrays with different shapes by matching dimensions from the right.
❓ data_output
intermediate
1:30remaining
Shape after broadcasting multiplication
Given the arrays below, what is the shape of the result after multiplication?
NumPy
import numpy as np

X = np.ones((4,1,3))
Y = np.arange(3)
result = X * Y
print(result.shape)
A(4, 1, 3)
B(4, 3, 3)
C(4, 3)
D(3, 4, 3)
Attempts:
2 left
💡 Hint
Check how numpy aligns dimensions from the right and broadcasts accordingly.
🔧 Debug
advanced
1:30remaining
Identify the error in broadcasting with incompatible shapes
What error will the following code raise?
NumPy
import numpy as np

A = np.ones((2,3,4))
B = np.arange(5)
result = A + B
AIndexError: index 4 is out of bounds for axis 0 with size 4
BTypeError: unsupported operand type(s) for +: 'int' and 'numpy.ndarray'
CValueError: operands could not be broadcast together with shapes (2,3,4) (5,)
DNo error, outputs a (2,3,5) array
Attempts:
2 left
💡 Hint
Check if the shapes can be broadcasted according to numpy rules.
🚀 Application
advanced
2:30remaining
Using broadcasting to normalize a 3D array
You have a 3D array representing 2 samples, each with 3 features and 4 observations. You want to subtract the mean of each feature across observations from the array. Which code correctly does this using broadcasting?
NumPy
import numpy as np

arr = np.array([[[1,2,3,4],[5,6,7,8],[9,10,11,12]],
                [[13,14,15,16],[17,18,19,20],[21,22,23,24]]])

# Compute mean and subtract
A
mean = arr.mean(axis=2, keepdims=True)
result = arr - mean
B
mean = arr.mean(axis=1, keepdims=True)
result = arr - mean
C
mean = arr.mean(axis=0, keepdims=True)
result = arr - mean
D
mean = arr.mean(axis=2)
result = arr - mean
Attempts:
2 left
💡 Hint
Think about which axis corresponds to observations and how to keep dimensions for broadcasting.
🧠 Conceptual
expert
2:00remaining
Understanding broadcasting rules with higher dimensions
Given arrays A with shape (3,1,5,1) and B with shape (1,4,1,6), what is the shape of the result when computing A + B?
A(3, 4, 1, 6)
B(3, 4, 5, 6)
C(3, 1, 5, 6)
DBroadcasting error due to incompatible shapes
Attempts:
2 left
💡 Hint
Align shapes from the right and apply broadcasting rules dimension-wise.

Practice

(1/5)
1. What does broadcasting in NumPy allow you to do when working with arrays of different shapes?
easy
A. Copy data from smaller arrays to larger arrays explicitly
B. Perform element-wise operations by stretching smaller arrays to match larger ones
C. Only work with arrays of the exact same shape
D. Convert arrays into lists automatically

Solution

  1. Step 1: Understand broadcasting concept

    Broadcasting lets NumPy perform operations on arrays with different shapes by stretching the smaller array without copying data.
  2. Step 2: Compare options with concept

    Only Perform element-wise operations by stretching smaller arrays to match larger ones correctly describes this behavior. Options B, C, and D are incorrect because broadcasting does not copy data explicitly, does not require same shape, and does not convert arrays to lists.
  3. Final Answer:

    Perform element-wise operations by stretching smaller arrays to match larger ones -> Option B
  4. Quick Check:

    Broadcasting = Stretch smaller arrays [OK]
Hint: Broadcasting stretches smaller arrays to match bigger ones [OK]
Common Mistakes:
  • Thinking broadcasting copies data
  • Believing arrays must have same shape
  • Confusing broadcasting with data type conversion
2. Which of the following NumPy array shapes can be broadcast together for element-wise addition?
easy
A. (4, 5) and (4, 5, 1)
B. (2, 3) and (3, 2)
C. (3, 1, 5) and (1, 4, 5)
D. (3, 3) and (2, 3)

Solution

  1. Step 1: Check broadcasting rules for each dimension

    Shapes (3,1,5) and (1,4,5) can broadcast because dimensions are compatible: 3 vs 1, 1 vs 4, 5 vs 5.
  2. Step 2: Verify other options

    Options A, B, and D have incompatible dimensions that cannot be broadcast for element-wise addition.
  3. Final Answer:

    (3, 1, 5) and (1, 4, 5) -> Option C
  4. Quick Check:

    Broadcast compatible shapes = (3,1,5) & (1,4,5) [OK]
Hint: Match dimensions from right, 1 or equal size broadcasts [OK]
Common Mistakes:
  • Ignoring dimension order when checking compatibility
  • Assuming all different shapes can broadcast
  • Confusing shape sizes in different axes
3. What is the output of this code?
import numpy as np
A = np.ones((2, 3, 1))
B = np.arange(4).reshape(1, 1, 4)
C = A + B
print(C.shape)
medium
A. ValueError due to shape mismatch
B. (2, 3, 1)
C. (1, 1, 4)
D. (2, 3, 4)

Solution

  1. Step 1: Analyze shapes of A and B

    A has shape (2, 3, 1), B has shape (1, 1, 4). Broadcasting rules allow these to combine because 1 can stretch to 2 and 3, and 1 can stretch to 4.
  2. Step 2: Determine resulting shape

    The result shape is the maximum along each dimension: max(2,1)=2, max(3,1)=3, max(1,4)=4, so (2, 3, 4).
  3. Final Answer:

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

    Broadcast result shape = (2,3,4) [OK]
Hint: Result shape = max dimension sizes per axis [OK]
Common Mistakes:
  • Confusing which dimension broadcasts to which
  • Expecting error instead of broadcasting
  • Mixing up shape order
4. Identify the error in this code snippet:
import numpy as np
X = np.ones((3, 1, 2))
Y = np.ones((2, 3))
Z = X + Y
medium
A. Shapes (3,1,2) and (2,3) cannot be broadcast together
B. Y should be reshaped to (1, 2, 3) before addition
C. X and Y have incompatible data types
D. No error, code runs fine

Solution

  1. Step 1: Compare shapes for broadcasting

    X shape is (3,1,2), Y shape is (2,3). Aligning from right: 2 vs 3 (mismatch), 1 vs 2 (mismatch), 3 vs missing dimension.
  2. Step 2: Conclude broadcasting compatibility

    Dimensions do not match or equal 1, so broadcasting fails and raises an error.
  3. Final Answer:

    Shapes (3,1,2) and (2,3) cannot be broadcast together -> Option A
  4. Quick Check:

    Broadcast error due to incompatible shapes [OK]
Hint: Check shapes right to left; mismatch means error [OK]
Common Mistakes:
  • Assuming automatic reshaping without explicit code
  • Ignoring dimension order in broadcasting
  • Thinking data types cause this error
5. You have a 3D array data with shape (10, 1, 5) representing 10 samples, 1 channel, and 5 features. You want to add a bias vector of shape (5,) to each sample and channel. Which code correctly applies broadcasting to add the bias to data?
hard
A. bias = np.array([1,2,3,4,5]) data + bias
B. bias = np.array([[1,2,3,4,5]]) data + bias
C. bias = np.array([1,2,3,4,5]).reshape((5,1)) data + bias
D. bias = np.array([[[1,2,3,4,5]]]) data + bias

Solution

  1. Step 1: Understand required bias shape and broadcasting

    data shape (10,1,5). Bias vector shape (5,) pads with 1s on left to (1,1,5) and broadcasts correctly across samples and channels.
  2. Step 2: Evaluate each option

    A: bias shape (5,), correct. B: shape (1,5) also broadcasts correctly, but is redundant. C: shape (5,1) incompatible. D: shape (1,1,5) also broadcasts correctly, but is more verbose.
  3. Final Answer:

    bias = np.array([1,2,3,4,5])
    data + bias
    -> Option A
  4. Quick Check:

    (10,1,5) + (5,) -> broadcasts OK
Hint: Bias shape must match trailing dims with extra dims as 1 [OK]
Common Mistakes:
  • Using 1D bias without extra dimensions
  • Wrong reshape causing shape mismatch
  • Assuming automatic dimension expansion without reshape
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