📖 Scenario: Imagine you have a list of temperatures in Celsius from different cities. You want to convert all these temperatures to Fahrenheit using a custom formula.
🎯 Goal: You will create a custom function to convert Celsius to Fahrenheit, then use np.vectorize() to apply this function to a list of temperatures efficiently.
📋 What You'll Learn
Create a list of Celsius temperatures called celsius_temps with the values 0, 20, 37, 100
Create a custom function called c_to_f that converts Celsius to Fahrenheit using the formula F = C * 9/5 + 32
Use np.vectorize() to apply c_to_f to celsius_temps and store the result in fahrenheit_temps
Print the fahrenheit_temps array
💡 Why This Matters
🌍 Real World
Scientists and engineers often need to apply custom calculations to many data points quickly. Vectorizing functions helps speed up these operations.
💼 Career
Data scientists and analysts use vectorized operations to handle large datasets efficiently without writing slow loops.
Progress0 / 4 steps
1
Create the Celsius temperatures list
Create a list called celsius_temps with these exact values: 0, 20, 37, 100
NumPy
Hint
Use square brackets to create a list with the given numbers separated by commas.
2
Define the Celsius to Fahrenheit function
Define a function called c_to_f that takes one parameter c and returns the Fahrenheit value using the formula c * 9/5 + 32
NumPy
Hint
Use def to create the function and return the calculated Fahrenheit value.
3
Use np.vectorize() to apply the function
Import numpy as np. Then create a variable called vectorized_c_to_f by applying np.vectorize() to the c_to_f function. Use vectorized_c_to_f to convert celsius_temps and store the result in fahrenheit_temps
NumPy
Hint
Remember to import numpy as np before using np.vectorize().
4
Print the Fahrenheit temperatures
Print the variable fahrenheit_temps to display the converted temperatures
NumPy
Hint
Use print(fahrenheit_temps) to show the converted temperatures.
Practice
(1/5)
1. What is the main purpose of np.vectorize() in numpy?
easy
A. To apply a custom function element-wise on numpy arrays without explicit loops
B. To create random numbers in numpy arrays
C. To sort numpy arrays quickly
D. To reshape numpy arrays into different dimensions
Solution
Step 1: Understand the role of np.vectorize()
np.vectorize() takes a function that works on single values and makes it work on arrays element-wise.
Step 2: Compare with other numpy functions
It is not used for random number generation, sorting, or reshaping arrays, which are handled by other numpy functions.
Final Answer:
To apply a custom function element-wise on numpy arrays without explicit loops -> Option A
Quick Check:
np.vectorize() = element-wise function application [OK]
Hint: Remember: vectorize applies functions element-wise on arrays [OK]
Common Mistakes:
Confusing vectorize with random number generation
Thinking vectorize reshapes arrays
Assuming vectorize sorts arrays
2. Which of the following is the correct way to create a vectorized version of a function f using numpy?
easy
A. vfunc = np.vectorize[f]
B. vfunc = np.vectorize(f)
C. vfunc = np.vectorize.f()
D. vfunc = np.vectorize->f
Solution
Step 1: Recall the syntax of np.vectorize
The correct syntax is to call np.vectorize as a function with the target function as argument: np.vectorize(f).
Step 2: Check the other options for syntax errors
Options A, C, and D use incorrect syntax like square brackets, dot notation, or arrows which are invalid in Python.
The function square_plus_one returns x**2 + 1. For inputs 1, 2, 3, the outputs are 1^2+1=2, 2^2+1=5, 3^2+1=10.
Step 2: Apply vectorized function on array
Using np.vectorize, the function applies element-wise on the array [1, 2, 3], producing [2, 5, 10].
Final Answer:
[2 5 10] -> Option A
Quick Check:
Element-wise square plus one = [2 5 10] [OK]
Hint: Apply function to each element, then collect results [OK]
Common Mistakes:
Forgetting to add 1 after squaring
Confusing output with input array
Assuming vectorize changes function logic
4. Identify the error in this code snippet:
import numpy as np
def add_five(x):
return x + 5
vfunc = np.vectorize(add_five)
arr = [1, 2, 3]
result = vfunc(arr)
print result
medium
A. np.vectorize cannot be used with functions that add numbers
B. The function add_five should return x * 5 instead of x + 5
C. The print statement is missing parentheses
D. The input array should be a numpy array, not a list
Solution
Step 1: Check the print statement syntax
In Python 3, print is a function and requires parentheses like print(result). print result causes a SyntaxError.
Step 2: Verify other parts of the code
The function logic is correct, np.vectorize works fine with addition functions, and input lists are accepted by np.vectorize.
Final Answer:
The print statement is missing parentheses -> Option C
Quick Check:
print requires parentheses in Python 3 [OK]
Hint: print requires parentheses in Python 3 [OK]
Common Mistakes:
Forgetting parentheses on print statement
Assuming list input is invalid for vectorize
Changing function logic unnecessarily
5. You want to apply a custom function that returns 'even' if a number is even and 'odd' if it is odd, on a numpy array. Which code correctly uses np.vectorize() to achieve this?
def even_odd(x):
if x % 2 == 0:
return 'even'
else:
return 'odd'
arr = np.array([1, 2, 3, 4])
# What next?
hard
A. result = np.apply_along_axis(even_odd, 1, arr)
print(result)
B. result = even_odd(arr)
print(result)
C. vfunc = np.vectorize(even_odd)
result = even_odd(arr.tolist())
print(result)
D. vfunc = np.vectorize(even_odd)
result = vfunc(arr)
print(result)
Solution
Step 1: Vectorize the custom function
Use np.vectorize(even_odd) to create a vectorized version that works element-wise on arrays.
Step 2: Apply vectorized function on numpy array
Call the vectorized function with the numpy array arr to get the result array of 'even'/'odd' strings.
Step 3: Check other options
result = even_odd(arr)
print(result) fails because even_odd does not support array input directly. vfunc = np.vectorize(even_odd)
result = even_odd(arr.tolist())
print(result) fails because even_odd does not support list input. result = np.apply_along_axis(even_odd, 1, arr)
print(result) fails with axis out of bounds for 1D array.
Final Answer:
vfunc = np.vectorize(even_odd)
result = vfunc(arr)
print(result) -> Option D
Quick Check:
Vectorize then apply on numpy array = vfunc = np.vectorize(even_odd)
result = vfunc(arr)
print(result) [OK]
Hint: Vectorize first, then apply on numpy array directly [OK]
Common Mistakes:
Calling function directly on array without vectorize
Calling non-vectorized function on list input
Using invalid axis in apply_along_axis
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.