📖 Scenario: You work in a small bakery that tracks daily sales of three types of bread over a week. You want to analyze the total sales per bread type and per day to understand which bread is most popular and which day has the highest sales.
🎯 Goal: Build a program that creates a 2D array of sales data, then calculates the total sales per bread type and per day using aggregation along specific axes.
📋 What You'll Learn
Create a 2D numpy array called sales with exact values representing sales of three bread types over seven days.
Create a variable called axis_bread set to 0 to represent aggregation along bread types.
Use np.sum with axis=axis_bread to calculate total sales per day and store it in total_per_day.
Create a variable called axis_day set to 1 to represent aggregation along days.
Use np.sum with axis=axis_day to calculate total sales per bread type and store it in total_per_bread.
Print total_per_day and total_per_bread to show the results.
💡 Why This Matters
🌍 Real World
Aggregating sales data helps businesses understand trends and make decisions about inventory and marketing.
💼 Career
Data analysts and scientists often aggregate data along specific axes to summarize and interpret multi-dimensional datasets.
Progress0 / 4 steps
1
Create the sales data array
Create a 2D numpy array called sales with these exact values representing sales of three bread types over seven days: [[10, 12, 9, 11, 13, 8, 7], [5, 7, 6, 8, 7, 5, 6], [3, 4, 2, 5, 4, 3, 2]]
NumPy
Hint
Use np.array and pass the list of lists exactly as shown.
2
Set axis variables for aggregation
Create a variable called axis_bread and set it to 0 to represent aggregation along bread types (rows). Then create a variable called axis_day and set it to 1 to represent aggregation along days (columns).
NumPy
Hint
Just assign the numbers 0 and 1 to the variables axis_bread and axis_day.
3
Calculate total sales per day and per bread type
Use np.sum with axis=axis_bread on sales to calculate total sales per day and store it in total_per_day. Then use np.sum with axis=axis_day on sales to calculate total sales per bread type and store it in total_per_bread.
NumPy
Hint
Use np.sum with the correct axis variables to get sums along rows or columns.
4
Print the results
Print the variables total_per_day and total_per_bread to display the total sales per day and per bread type.
NumPy
Hint
Use two print statements, one for each variable.
Practice
(1/5)
1. What does setting axis=0 do when aggregating a 2D NumPy array?
easy
A. Aggregates values down each column (per column)
B. Aggregates values across each row (per row)
C. Flattens the array before aggregation
D. Aggregates only the diagonal elements
Solution
Step 1: Understand axis parameter meaning
In NumPy, axis=0 means aggregation happens down the rows, combining values in each column.
Step 2: Apply to 2D array
Aggregating with axis=0 summarizes each column separately.
Final Answer:
Aggregates values down each column (per column) -> Option A
Quick Check:
axis=0 means down rows = per column aggregation [OK]
Thinking axis=0 aggregates rows instead of columns
Assuming axis=0 flattens the array
2. Which of the following is the correct syntax to sum a 2D NumPy array arr along rows (per row)?
easy
A. np.sum(arr, axis=1)
B. np.sum(arr, axis=0)
C. arr.sum(axis=2)
D. np.sum(arr)
Solution
Step 1: Identify axis for row-wise sum
Summing across columns (per row) requires axis=1.
Step 2: Check syntax correctness
np.sum(arr, axis=1) correctly sums each row's elements.
Final Answer:
np.sum(arr, axis=1) -> Option A
Quick Check:
Sum per row uses axis=1 [OK]
Hint: Use axis=1 to sum across columns (per row) [OK]
Common Mistakes:
Using axis=0 to sum rows
Using invalid axis like 2 for 2D array
Forgetting to specify axis
3. Given the array:
arr = np.array([[1, 2, 3], [4, 5, 6]])
What is the output of np.sum(arr, axis=0)?
medium
A. [3 7 11]
B. [5 7 9]
C. [6 15]
D. [1 2 3 4 5 6]
Solution
Step 1: Understand axis=0 sum
Sum down rows means add elements in each column: (1+4), (2+5), (3+6).
Step 2: Calculate sums
Calculations: 1+4=5, 2+5=7, 3+6=9, so result is [5 7 9].
Final Answer:
[5 7 9] -> Option B
Quick Check:
Sum axis=0 adds columns down rows [OK]
Hint: Sum axis=0 adds columns down rows [OK]
Common Mistakes:
Adding rows instead of columns
Confusing axis=0 with axis=1
Returning flattened array instead of summed
4. What is wrong with this code snippet?
arr = np.array([[1, 2], [3, 4]])
result = np.mean(arr, axis=2)
medium
A. No error, code runs fine
B. np.mean cannot be used on arrays
C. Missing parentheses in np.array
D. axis=2 is invalid for 2D array
Solution
Step 1: Check array dimensions
The array arr is 2D with shape (2,2), so valid axes are 0 and 1.
Step 2: Validate axis parameter
Using axis=2 is invalid and causes an error because axis 2 does not exist.
Final Answer:
axis=2 is invalid for 2D array -> Option D
Quick Check:
Axis must be less than array dimensions [OK]
Hint: Axis must be less than array dimensions [OK]
Common Mistakes:
Using axis number too large for array
Thinking np.mean can't be used on arrays
Ignoring error messages
5. You have a 3D NumPy array data with shape (4, 3, 2). You want to compute the sum of each 2D slice along the first axis (axis=0), resulting in a 2D array. Which code correctly does this?
hard
A. np.sum(data)
B. np.sum(data, axis=1)
C. np.sum(data, axis=0)
D. np.sum(data, axis=2)
Solution
Step 1: Understand array shape and axis
Array shape is (4,3,2). Summing along axis=0 collapses the first dimension (4), resulting in shape (3,2).
Step 2: Apply sum along axis=0
Using np.sum(data, axis=0) sums all 4 slices element-wise, producing a 2D array.
Final Answer:
np.sum(data, axis=0) -> Option C
Quick Check:
Sum axis=0 collapses first dimension to 2D [OK]
Hint: Sum axis=0 collapses first dimension in 3D arrays [OK]
Common Mistakes:
Using wrong axis and getting wrong shape
Summing all elements without axis
Confusing axis numbering in 3D arrays
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.