Challenge - 5 Problems
Custom Ufunc Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate2:00remaining
Output of a simple custom ufunc
What is the output of this code that defines and applies a custom ufunc to a numpy array?
NumPy
import numpy as np from numpy import vectorize def square_plus_one(x): return x**2 + 1 custom_func = vectorize(square_plus_one) arr = np.array([1, 2, 3]) result = custom_func(arr) print(result)
Attempts:
2 left
💡 Hint
Remember the function squares each element and adds one.
✗ Incorrect
The function squares each element (1, 2, 3) to get (1, 4, 9) and then adds 1 to each, resulting in (2, 5, 10).
🧠 Conceptual
intermediate1:30remaining
Why use custom ufuncs instead of loops?
Why are custom ufuncs preferred over Python loops when applying operations on numpy arrays?
Attempts:
2 left
💡 Hint
Think about how numpy optimizes operations internally.
✗ Incorrect
Custom ufuncs are compiled and operate element-wise efficiently, avoiding the overhead of Python loops, which makes them faster.
❓ data_output
advanced2:00remaining
Result of applying a custom ufunc with multiple inputs
What is the output of this code that applies a custom ufunc taking two inputs?
NumPy
import numpy as np from numpy import vectorize def multiply_and_add(x, y): return x * y + y custom_func = vectorize(multiply_and_add) arr1 = np.array([1, 2, 3]) arr2 = np.array([4, 5, 6]) result = custom_func(arr1, arr2) print(result)
Attempts:
2 left
💡 Hint
Calculate x*y + y for each pair of elements.
✗ Incorrect
For each pair (x, y): 1*4+4=8, 2*5+5=15, 3*6+6=24, so the output is [8 15 24].
🔧 Debug
advanced2:00remaining
Identify the error in this custom ufunc code
What error does this code raise when defining a custom ufunc incorrectly?
NumPy
import numpy as np from numpy import vectorize def faulty_func(x): if x > 0: return x # Missing return for else case custom_func = vectorize(faulty_func) arr = np.array([-1, 0, 1]) result = custom_func(arr) print(result)
Attempts:
2 left
💡 Hint
Think about what happens if the function returns nothing for some inputs.
✗ Incorrect
The function returns None for x <= 0, but numpy expects a float, causing a TypeError when converting None to float.
🚀 Application
expert2:30remaining
Why create custom ufuncs for complex operations?
Which reason best explains why creating custom ufuncs is important for complex data science tasks?
Attempts:
2 left
💡 Hint
Think about the benefits of vectorization and custom logic combined.
✗ Incorrect
Custom ufuncs let you apply your own element-wise logic efficiently on arrays, making code faster and easier to read.