Bird
Raised Fist0
NumPydata~10 mins

np.vectorize() for custom functions in NumPy - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to create a vectorized version of the function square.

NumPy
import numpy as np

def square(x):
    return x ** 2

vectorized_square = np.vectorize([1])

result = vectorized_square(np.array([1, 2, 3]))
print(result)
Drag options to blanks, or click blank then click option'
Alambda x: x*2
Bnp.square
Cnp.array
Dsquare
Attempts:
3 left
💡 Hint
Common Mistakes
Passing a NumPy function like np.square instead of the custom function.
Passing a lambda that does not match the intended operation.
Passing np.array instead of a function.
2fill in blank
medium

Complete the code to vectorize a function that returns 'even' or 'odd' for each number.

NumPy
import numpy as np

def even_or_odd(x):
    if x % 2 == 0:
        return 'even'
    else:
        return 'odd'

vec_func = np.vectorize([1])

result = vec_func(np.array([1, 2, 3, 4]))
print(result)
Drag options to blanks, or click blank then click option'
Anp.vectorize
Beven_or_odd
Clambda x: x % 2
Dnp.array
Attempts:
3 left
💡 Hint
Common Mistakes
Passing np.vectorize itself instead of the function.
Passing a lambda that returns a number instead of 'even' or 'odd'.
Passing np.array instead of a function.
3fill in blank
hard

Fix the error in the code by filling the blank to correctly vectorize the function add_one.

NumPy
import numpy as np

def add_one(x):
    return x + 1

vec_add_one = np.vectorize([1])

arr = np.array([10, 20, 30])
result = vec_add_one(arr)
print(result)
Drag options to blanks, or click blank then click option'
Aadd_one
Badd_one()
Cnp.add
Dlambda x: x + 1
Attempts:
3 left
💡 Hint
Common Mistakes
Using add_one() instead of add_one.
Passing np.add which is a different function.
Passing a lambda instead of the named function.
4fill in blank
hard

Fill both blanks to create a vectorized function that returns True if a number is greater than 5 and False otherwise.

NumPy
import numpy as np

def greater_than_five(x):
    return x [1] 5

vec_func = np.vectorize(greater_than_five)

arr = np.array([3, 6, 9])
result = vec_func(arr) == [2]
print(result)
Drag options to blanks, or click blank then click option'
A>
BTrue
CFalse
D<
Attempts:
3 left
💡 Hint
Common Mistakes
Using '<' instead of '>' in the function.
Comparing the result to False instead of True.
Using '==' inside the function instead of '>'.
5fill in blank
hard

Fill all three blanks to create a vectorized function that returns the length of a string if it is longer than 3 characters, else returns 0.

NumPy
import numpy as np

def length_if_long(word):
    return len(word) if len(word) [1] 3 else [2]

vec_length = np.vectorize([3])

words = np.array(['cat', 'elephant', 'dog'])
result = vec_length(words)
print(result)
Drag options to blanks, or click blank then click option'
A>
B0
Clength_if_long
D<=
Attempts:
3 left
💡 Hint
Common Mistakes
Using '<=' instead of '>' in the condition.
Returning the word instead of 0 in the else part.
Passing a lambda instead of the function name to np.vectorize.

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

  1. 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.
  2. 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.
  3. Final Answer:

    To apply a custom function element-wise on numpy arrays without explicit loops -> Option A
  4. 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

  1. 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).
  2. 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.
  3. Final Answer:

    vfunc = np.vectorize(f) -> Option B
  4. Quick Check:

    Correct syntax uses parentheses: np.vectorize(f) [OK]
Hint: Use parentheses, not brackets or dots, with np.vectorize [OK]
Common Mistakes:
  • Using square brackets instead of parentheses
  • Trying to access vectorize as an attribute
  • Using invalid arrow syntax
3. What will be the output of the following code?
import numpy as np
def square_plus_one(x):
    return x**2 + 1
vfunc = np.vectorize(square_plus_one)
arr = np.array([1, 2, 3])
result = vfunc(arr)
print(result)
medium
A. [2 5 10]
B. [1 4 9]
C. [2 3 4]
D. [1 2 3]

Solution

  1. Step 1: Understand the function logic

    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.
  2. 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].
  3. Final Answer:

    [2 5 10] -> Option A
  4. 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

  1. 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.
  2. 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.
  3. Final Answer:

    The print statement is missing parentheses -> Option C
  4. 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

  1. Step 1: Vectorize the custom function

    Use np.vectorize(even_odd) to create a vectorized version that works element-wise on arrays.
  2. 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.
  3. 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.
  4. Final Answer:

    vfunc = np.vectorize(even_odd) result = vfunc(arr) print(result) -> Option D
  5. 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 unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard