📖 Scenario: You work in a small bakery that tracks daily sales of different types of bread. You want to analyze the sales data to understand how many breads were sold each day and how sales compare to a daily target.
🎯 Goal: Build a small program using numpy arrays to apply common broadcasting patterns. You will create sales data, set a daily sales target, calculate total sales per day, and compare sales to the target using broadcasting.
📋 What You'll Learn
Use numpy arrays to store sales data
Create a daily sales target as a single number
Use broadcasting to sum sales per day
Use broadcasting to compare daily sales to the target
Print the final comparison result
💡 Why This Matters
🌍 Real World
Broadcasting is a powerful tool in data science to efficiently compare and combine data without writing loops. It helps analyze sales, sensor data, or any tabular data quickly.
💼 Career
Understanding broadcasting is essential for data analysts and scientists to write clean, fast, and readable code when working with arrays and matrices.
Progress0 / 4 steps
1
Create the sales data array
Import numpy as np and create a 2D numpy array called sales with these exact values: [[10, 15, 20], [12, 18, 25], [14, 20, 30]]. Each row is a day, and each column is a bread type.
NumPy
Hint
Use np.array() to create the 2D array with the exact numbers.
2
Set the daily sales target
Create a variable called daily_target and set it to the integer 50. This is the sales goal for each day.
NumPy
Hint
Just assign the number 50 to the variable daily_target.
3
Calculate total sales per day using broadcasting
Create a variable called total_sales that sums the sales of all bread types for each day using np.sum on sales with axis=1.
NumPy
Hint
Use np.sum with axis=1 to sum rows (days).
4
Compare total sales to daily target and print result
Create a variable called target_met that compares total_sales to daily_target using the >= operator. Then print target_met.
NumPy
Hint
Use total_sales >= daily_target to get a boolean array, then print it.
Practice
(1/5)
1. What does broadcasting in NumPy allow you to do?
easy
A. Perform operations on arrays of different shapes without explicit loops
B. Only add arrays of the exact same shape
C. Convert arrays into lists automatically
D. Sort arrays in ascending order
Solution
Step 1: Understand broadcasting concept
Broadcasting lets NumPy perform element-wise operations on arrays with different shapes by automatically expanding the smaller array.
Step 2: Compare options
Only Perform operations on arrays of different shapes without explicit loops correctly describes this feature. Options A, B, and C describe unrelated behaviors.
Final Answer:
Perform operations on arrays of different shapes without explicit loops -> Option A
Quick Check:
Broadcasting = operations on different shapes [OK]
Hint: Broadcasting means math on different shaped arrays without loops [OK]
Common Mistakes:
Thinking broadcasting requires arrays to have the same shape
Confusing broadcasting with sorting or type conversion
Assuming broadcasting changes array data types
2. Which of the following is the correct way to add a 1D array to each row of a 2D array using broadcasting?
easy
A. result = matrix + vector.T where matrix.shape = (3,4) and vector.shape = (4,)
B. result = matrix + vector where matrix.shape = (3,4) and vector.shape = (3,)
C. result = matrix + vector where matrix.shape = (3,4) and vector.shape = (4,)
D. result = matrix + vector.reshape(3,1) where matrix.shape = (3,4) and vector.shape = (4,)
Solution
Step 1: Check shapes for broadcasting
Adding a 1D array of shape (4,) to each row of a (3,4) matrix works because the vector matches the number of columns.
Step 2: Evaluate options
result = matrix + vector where matrix.shape = (3,4) and vector.shape = (4,) matches this pattern. result = matrix + vector where matrix.shape = (3,4) and vector.shape = (3,) tries to add a (3,) vector to (3,4) matrix which fails. result = matrix + vector.T where matrix.shape = (3,4) and vector.shape = (4,) uses transpose incorrectly. result = matrix + vector.reshape(3,1) where matrix.shape = (3,4) and vector.shape = (4,) reshapes vector wrongly.
Final Answer:
result = matrix + vector where matrix.shape = (3,4) and vector.shape = (4,) -> Option C
Quick Check:
Vector shape matches columns for row-wise addition [OK]
Hint: Add vector matching columns to matrix rows for broadcasting [OK]
Common Mistakes:
Using vector shape matching rows instead of columns
Trying to transpose 1D vector which has no effect
Reshaping vector incorrectly before addition
3. What is the output of the following code?
import numpy as np
A = np.array([[1, 2, 3], [4, 5, 6]])
B = np.array([10, 20, 30])
C = A + B
print(C)
medium
A. [[11 22 33]
[14 25 36]]
B. [[11 22 33]
[14 25 36]
[10 20 30]]
C. [[10 20 30]
[10 20 30]]
D. ValueError due to shape mismatch
Solution
Step 1: Understand shapes of A and B
A has shape (2,3), B has shape (3,). B will broadcast across rows of A.
Step 2: Perform element-wise addition
Each row of A adds B: [1+10, 2+20, 3+30] = [11, 22, 33], [4+10, 5+20, 6+30] = [14, 25, 36].
Final Answer:
[[11 22 33]
[14 25 36]] -> Option A
Quick Check:
Broadcast adds vector to each matrix row [OK]
Hint: Add vector to each matrix row when vector shape matches columns [OK]
Common Mistakes:
Expecting an extra row in output
Confusing broadcasting with stacking arrays
Thinking shape mismatch causes error here
4. Identify the error in this code snippet:
import numpy as np
X = np.array([[1, 2], [3, 4], [5, 6]])
y = np.array([10, 20, 30])
result = X + y
medium
A. y should be reshaped to (3,1) before addition
B. No error, code runs fine
C. X and y must have the same number of columns
D. Shapes (3,2) and (3,) cannot broadcast together
Solution
Step 1: Check shapes of X and y
X shape is (3,2), y shape is (3,). Broadcasting rules require trailing dimensions to match or be 1.
Step 2: Analyze broadcasting compatibility
Here, last dims are 2 (X) and 1 (y) after broadcasting rules, so y broadcasts along columns. The addition works without error.
Final Answer:
No error, code runs fine -> Option B
Quick Check:
Broadcasting allows (3,2) + (3,) by treating (3,) as (3,1) [OK]
Hint: Trailing dimensions must match or be 1 for broadcasting [OK]
Common Mistakes:
Assuming broadcasting works if first dims match
Not checking trailing dimension compatibility
Thinking reshaping y to (3,1) fixes addition here
5. Given a 2D array M of shape (4,3) and a 1D array v of shape (4,), how can you add v to each column of M using broadcasting?
hard
A. M + v.T
B. M + v
C. M + v.reshape(1,4)
D. M + v.reshape(4,1)
Solution
Step 1: Understand shapes and desired operation
M is (4,3), v is (4,). To add v to each column, v must be reshaped to (4,1) to broadcast along columns.
Step 2: Check each option
M + v.reshape(4,1) reshapes v to (4,1), allowing broadcasting with M (4,3). M + v tries to add (4,) to (4,3) which broadcasts incorrectly. M + v.reshape(1,4) reshapes v to (1,4), incompatible. M + v.T uses transpose on 1D array which has no effect.
Final Answer:
M + v.reshape(4,1) -> Option D
Quick Check:
Reshape vector to (rows,1) to add to columns [OK]
Hint: Reshape vector to (rows,1) to add to matrix columns [OK]
Common Mistakes:
Adding vector without reshaping when shapes differ
Using reshape(1, rows) instead of (rows,1)
Assuming transpose changes 1D array shape
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.