Bird
Raised Fist0
NumPydata~10 mins

Broadcasting rules in NumPy - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Broadcasting rules
Start with two arrays
↓
Compare shapes from right
↓
Check dimension sizes
↓
If sizes equal or one is 1
Yes↓
Broadcast smaller dimension
↓
Repeat for all dimensions
↓
If all dimensions compatible
Yes↓
Arrays broadcasted to common shape
↓
Perform element-wise operation
↓
End
Broadcasting compares array shapes from right to left, expanding dimensions of size 1 to match the other array, allowing element-wise operations on different shaped arrays.
Execution Sample
NumPy
import numpy as np
A = np.array([[1,2,3],[4,5,6]])
B = np.array([10,20,30])
C = A + B
print(C)
Adds a 2x3 array and a 1x3 array by broadcasting the smaller array across rows.
Execution Table
StepArray A shapeArray B shapeCompare dimsBroadcast actionResulting shapeOperation
1(2, 3)(3,)Compare last dims: 3 and 3No change needed(2, 3)Ready
2(2, 3)(3,)Broadcast B's missing dim to 1Add leading 1 to B shape(2, 3)Ready
3(2, 3)(1, 3)Dims compatible (2 vs 1, 3 vs 3)Broadcast B's first dim from 1 to 2(2, 3)Ready
4(2, 3)(2, 3)Shapes matchElement-wise addition(2, 3)Compute C = A + B
5N/AN/AN/AN/A(2, 3)Output: [[11 22 33] [14 25 36]]
💡 Broadcasting completes when all dimensions are compatible or expanded to match.
Variable Tracker
VariableStartAfter Step 2After Step 3Final
A.shape(2, 3)(2, 3)(2, 3)(2, 3)
B.shape(3,)(3,)(1, 3)(2, 3)
CN/AN/AN/A[[11 22 33] [14 25 36]]
Key Moments - 3 Insights
Why does numpy add a leading 1 to B's shape from (3,) to (1,3)?
Because broadcasting compares shapes from right to left, and B has fewer dimensions, numpy adds a leading 1 to align dimensions for comparison (see execution_table step 2).
What happens if dimensions are not equal and neither is 1?
Broadcasting fails with an error because dimensions must be equal or one must be 1 to broadcast (not shown here, but implied by exit condition in execution_table).
How does broadcasting affect the actual data in arrays?
Broadcasting does not copy data but virtually expands dimensions of size 1 to match the other array for element-wise operations (see variable_tracker for shape changes).
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table step 3, what is B's shape after broadcasting?
A(1, 3)
B)3 ,1(
C(3,)
D(2,)
💡 Hint
Check the 'Resulting shape' column in step 3 of execution_table.
At which step does numpy add a leading dimension to B's shape?
AStep 1
BStep 2
CStep 3
DStep 4
💡 Hint
Look at the 'Broadcast action' column describing shape changes.
If B was shape (2, 1) instead of (3,), what would be the resulting shape after broadcasting with A (2,3)?
A(3, 3)
B(2, 1)
C(2, 3)
D(2, 2)
💡 Hint
Broadcasting expands dimensions of size 1 to match the other array's size.
Concept Snapshot
Broadcasting rules:
- Compare shapes from right to left
- Dimensions must be equal or one must be 1
- Add leading 1s to smaller shape if needed
- Expand dimensions of size 1 to match
- Enables element-wise operations on different shaped arrays
Full Transcript
Broadcasting in numpy allows arrays with different shapes to be used together in operations. It works by comparing the shapes of the arrays from right to left. If the dimensions are equal or one is 1, numpy can broadcast the smaller array by virtually expanding its dimensions. For example, adding a (2,3) array to a (3,) array works because numpy treats the (3,) array as (1,3) and then broadcasts it to (2,3). This lets numpy perform element-wise addition without copying data. If dimensions are incompatible, broadcasting fails. This visual trace showed step-by-step how shapes are compared and expanded, how variables change, and how the final result is computed.

Practice

(1/5)
1. What is the main purpose of broadcasting in NumPy?
easy
A. To create copies of arrays for backup
B. To perform operations on arrays of different shapes by stretching dimensions
C. To sort arrays automatically before calculations
D. To convert arrays into lists for easier processing

Solution

  1. Step 1: Understand broadcasting concept

    Broadcasting allows NumPy to perform element-wise operations on arrays with different shapes by stretching dimensions of size 1.
  2. Step 2: Compare options with concept

    Only To perform operations on arrays of different shapes by stretching dimensions correctly describes this purpose. Other options describe unrelated actions.
  3. Final Answer:

    To perform operations on arrays of different shapes by stretching dimensions -> Option B
  4. Quick Check:

    Broadcasting = Stretching dimensions for operations [OK]
Hint: Broadcasting stretches size 1 dims to match shapes [OK]
Common Mistakes:
  • Thinking broadcasting copies arrays
  • Confusing broadcasting with sorting
  • Believing broadcasting converts arrays to lists
2. Which of the following is a valid broadcasting rule in NumPy?
easy
A. Arrays must have the same number of dimensions
B. All dimensions must be equal
C. Dimensions must be exactly equal or one of them must be 1
D. Only 1D arrays can be broadcasted

Solution

  1. Step 1: Recall broadcasting rules

    Broadcasting compares shapes from right to left; dimensions must be equal or one must be 1 to stretch.
  2. Step 2: Evaluate options

    Dimensions must be exactly equal or one of them must be 1 matches the rule exactly. Options A, B, and D are incorrect because broadcasting allows different dimensions and works beyond 1D arrays.
  3. Final Answer:

    Dimensions must be exactly equal or one of them must be 1 -> Option C
  4. Quick Check:

    Broadcasting rule = equal or 1 dimension [OK]
Hint: Check if dims are equal or one is 1 [OK]
Common Mistakes:
  • Assuming all dims must match exactly
  • Believing arrays must have same number of dims
  • Thinking broadcasting only works on 1D arrays
3. What is the shape of the result when adding arrays a = np.ones((3,1)) and b = np.ones((1,4)) using broadcasting?
medium
A. (3, 1)
B. (4, 3)
C. (1, 4)
D. (3, 4)

Solution

  1. Step 1: Analyze shapes of a and b

    a has shape (3,1), b has shape (1,4). Broadcasting compares from right: 1 vs 4 and 3 vs 1.
  2. Step 2: Apply broadcasting rules

    Dimensions 1 and 4 broadcast to 4; 3 and 1 broadcast to 3. Result shape is (3,4).
  3. Final Answer:

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

    Broadcast (3,1) + (1,4) = (3,4) [OK]
Hint: Match dims right to left, stretch 1 to other size [OK]
Common Mistakes:
  • Confusing order of dimensions
  • Forgetting to broadcast size 1 dimension
  • Swapping dimensions in result shape
4. Consider the code:
import numpy as np
x = np.ones((2,3))
y = np.ones((3,2))
z = x + y

What error will occur and why?
medium
A. ValueError because shapes (2,3) and (3,2) are incompatible for broadcasting
B. TypeError because arrays have different data types
C. No error, result shape is (2,3)
D. SyntaxError due to invalid addition

Solution

  1. Step 1: Check shapes of x and y

    x shape is (2,3), y shape is (3,2). Compare dims right to left: 3 vs 2 and 2 vs 3.
  2. Step 2: Apply broadcasting rules

    Neither dimension matches or is 1, so broadcasting fails and raises ValueError.
  3. Final Answer:

    ValueError because shapes (2,3) and (3,2) are incompatible for broadcasting -> Option A
  4. Quick Check:

    Broadcasting fails if dims differ and neither is 1 [OK]
Hint: Broadcast dims must be equal or 1; else error [OK]
Common Mistakes:
  • Assuming addition works despite shape mismatch
  • Confusing error type as TypeError or SyntaxError
  • Ignoring dimension order in shapes
5. You have a 3D array A with shape (4,1,5) and a 2D array B with shape (1,3). You want to add them using broadcasting. What will be the shape of the result?
hard
A. Broadcasting will fail with ValueError
B. (4, 1, 3)
C. (1, 3, 5)
D. (4, 3, 5)

Solution

  1. Step 1: Align shapes by adding missing dimension

    A shape is (4,1,5), B shape is (1,3). Treat B as (1,1,3) to match 3D shape.
  2. Step 2: Compare dimensions right to left

    For each dim: 5 vs 3 (A's last dim 5, B's last dim 3) - mismatch. This means broadcasting fails.
  3. Step 3: Re-examine dimension matching

    Actually, B's shape is (1,3), so when adding to A (4,1,5), B is broadcast to (1,1,3). Compare dims: 5 vs 3 (A's last dim 5, B's last dim 3) - mismatch. NumPy aligns shapes from right: A (4,1,5), B (1,1,3). Last dims 5 and 3 mismatch, so broadcasting fails.
  4. Final Answer:

    Broadcasting will fail with ValueError -> Option A
  5. Quick Check:

    Mismatch in last dims 5 and 3 causes failure [OK]
Hint: Align dims right to left; mismatch without 1 causes error [OK]
Common Mistakes:
  • Assuming missing dims auto-align without prepending
  • Ignoring last dimension mismatch
  • Thinking broadcasting always works if dims differ
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