📖 Scenario: Imagine you are analyzing sales data for a small store. You want to categorize daily sales numbers into different labels based on their values.
🎯 Goal: You will create a NumPy array of sales numbers, define conditions to categorize these sales, use np.choose() to assign category labels, and finally display the categorized results.
📋 What You'll Learn
Create a NumPy array called sales with exact values: [150, 85, 230, 45, 120]
Create a NumPy array called conditions with three conditions for sales: less than 50, between 50 and 150 (inclusive), and greater than 150
Use np.choose() with the conditions array to assign categories: 'Low', 'Medium', and 'High'
Print the final array of category labels
💡 Why This Matters
🌍 Real World
Categorizing data based on conditions is common in sales analysis, customer segmentation, and many other fields.
💼 Career
Data scientists often use conditional selection to prepare data for analysis and reporting.
Progress0 / 4 steps
1
Create the sales data array
Create a NumPy array called sales with these exact values: [150, 85, 230, 45, 120].
NumPy
Hint
Use np.array() to create the array with the exact numbers.
2
Define conditions for sales categories
Create a NumPy array called conditions with three conditions for the sales array: sales less than 50, sales between 50 and 150 inclusive, and sales greater than 150. Use NumPy comparison operators to create boolean arrays and combine them into a single array of integers representing the condition index for each sale.
NumPy
Hint
Use np.select() with a list of conditions and corresponding integer choices.
3
Use np.choose() to assign category labels
Create a list called categories with the strings 'Low', 'Medium', and 'High'. Then use np.choose() with the conditions array to create a new array called sales_categories that assigns the correct category label to each sale.
NumPy
Hint
Use np.choose() with the conditions array and the categories list.
4
Print the sales categories
Print the sales_categories array to display the category labels for each sale.
NumPy
Hint
Use print() to display the sales_categories array.
Practice
(1/5)
1. What does the np.choose() function do in NumPy?
easy
A. Sorts an array in ascending order
B. Selects elements from multiple arrays based on an index array
C. Calculates the mean of an array
D. Generates random numbers
Solution
Step 1: Understand the purpose of np.choose()
np.choose() uses an index array to pick elements from multiple arrays at corresponding positions.
Step 2: Compare with other options
Sorting, mean calculation, and random number generation are unrelated to np.choose().
Final Answer:
Selects elements from multiple arrays based on an index array -> Option B
Quick Check:
np.choose() = Select elements [OK]
Hint: Remember: np.choose picks from arrays using index array [OK]
Common Mistakes:
Confusing np.choose() with sorting functions
Thinking np.choose() calculates statistics
Assuming np.choose() generates random values
2. Which of the following is the correct syntax to use np.choose() with an index array idx and option arrays a, b, c?
easy
A. np.choose(idx, [a, b, c])
B. np.choose([a, b, c], idx)
C. np.choose(a, b, c, idx)
D. np.choose(idx, a, b, c)
Solution
Step 1: Recall np.choose() parameter order
The first argument is the index array, the second is a list of arrays to choose from.
Step 2: Match syntax with options
Only np.choose(idx, [a, b, c]) matches the correct order and structure.
Final Answer:
np.choose(idx, [a, b, c]) -> Option A
Quick Check:
Index first, then list of arrays [OK]
Hint: Index array first, then list of arrays in np.choose() [OK]
Common Mistakes:
Swapping index array and options
Passing options as separate arguments instead of a list
Using incorrect argument order
3. What is the output of the following code?
import numpy as np
idx = np.array([0, 2, 1, 0])
a = np.array([10, 20, 30, 40])
b = np.array([100, 200, 300, 400])
c = np.array([1000, 2000, 3000, 4000])
result = np.choose(idx, [a, b, c])
print(result)
medium
A. [10 2000 300 40]
B. [10 300 200 40]
C. [100 3000 2000 400]
D. [1000 300 200 40]
Solution
Step 1: Understand index array and options
Index array is [0, 2, 1, 0]. Arrays are a=[10,20,30,40], b=[100,200,300,400], c=[1000,2000,3000,4000].
Step 2: Select elements using np.choose()
For each position, pick from arrays based on index: pos0: idx=0 -> a[0]=10 pos1: idx=2 -> c[1]=2000 pos2: idx=1 -> b[2]=300 pos3: idx=0 -> a[3]=40 So result = [a[0], c[1], b[2], a[3]] = [10, 2000, 300, 40]
Step 3: Check options
[10 300 200 40] incorrectly uses 300 and 200 instead of 2000 and 300. [10 2000 300 40] matches our result.
Final Answer:
[10 2000 300 40] -> Option A
Quick Check:
np.choose picks arrays by index, then elements by position [OK]
Hint: Index picks array, position picks element [OK]
Common Mistakes:
Mixing up index meaning (array vs element)
Swapping elements from wrong arrays
Confusing np.choose with fancy indexing
4. The following code raises an error. What is the most likely cause?
import numpy as np
idx = np.array([0, 1, 2])
a = np.array([1, 2])
b = np.array([3, 4])
c = np.array([5, 6])
result = np.choose(idx, [a, b, c])
print(result)
medium
A. np.choose() requires index array to be boolean
B. Index array contains values outside the range of options
C. Index array and option arrays have incompatible shapes causing mismatch
D. np.choose() cannot handle more than two option arrays
Solution
Step 1: Check index array and options
Index array is [0,1,2], which is valid for 3 options (a,b,c).
Step 2: Check shapes of option arrays
a, b, c each have shape (2,), but index array has length 3. np.choose expects index and options to have compatible shapes.
Step 3: Identify cause of error
Index array length 3 vs option arrays length 2 causes shape mismatch error.
Final Answer:
Index array and option arrays have incompatible shapes causing mismatch -> Option C
Quick Check:
Shape mismatch causes np.choose error [OK]
Hint: Ensure index and option arrays have compatible shapes [OK]
Common Mistakes:
Assuming index values cause error
Thinking np.choose needs boolean index
Believing np.choose limits number of options
5. You have three arrays representing scores from three different tests:
And an index array indicating the best test for each student:
best = np.array([1, 2, 0])
Using np.choose(), how do you create an array of the best scores for each student?
hard
A. np.choose(best, [test1, test3, test2])
B. np.choose(best, [test3, test1, test2])
C. np.choose(best, [test2, test3, test1])
D. np.choose(best, [test1, test2, test3])
Solution
Step 1: Understand index array meaning
Index array best = [1, 2, 0] means: For student 0, best test is index 1 -> test2 For student 1, best test is index 2 -> test3 For student 2, best test is index 0 -> test1
Step 2: Match option arrays order to index
To pick correctly, option arrays must be in order [test1, test2, test3] so index 0 picks test1, index 1 picks test2, index 2 picks test3.
Step 3: Verify np.choose usage
Using np.choose(best, [test1, test2, test3]) picks correct scores per student.
Final Answer:
np.choose(best, [test1, test2, test3]) -> Option D
Quick Check:
Order options to match index meaning [OK]
Hint: Order option arrays to match index values [OK]
Common Mistakes:
Assuming option arrays order matches test numbers
Not matching index values to option array order
Using wrong order causing incorrect selection
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.