Bird
Raised Fist0
NumPydata~20 mins

Why boolean masking matters in NumPy - Challenge Your Understanding

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Challenge - 5 Problems
🎖️
Boolean Masking Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of boolean masking on a NumPy array
What is the output of this code snippet using boolean masking on a NumPy array?
NumPy
import numpy as np
arr = np.array([10, 15, 20, 25, 30])
mask = arr > 20
result = arr[mask]
print(result)
A[25 30]
B[10 15 20]
C[20 25 30]
D[10 15]
Attempts:
2 left
💡 Hint
Think about which elements are greater than 20 in the array.
❓ data_output
intermediate
1:30remaining
Number of elements selected by boolean mask
How many elements does this boolean mask select from the array?
NumPy
import numpy as np
arr = np.array([5, 12, 17, 9, 3, 21])
mask = (arr >= 10) & (arr <= 20)
selected = arr[mask]
print(len(selected))
A4
B2
C5
D3
Attempts:
2 left
💡 Hint
Count how many numbers are between 10 and 20 inclusive.
🔧 Debug
advanced
2:00remaining
Identify the error in boolean masking code
What error does this code raise when trying to apply boolean masking?
NumPy
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
mask = arr > 3
result = arr[mask == True]
print(result)
AIndexError: boolean index did not match indexed array along dimension 0
BTypeError: unsupported operand type(s) for ==: 'numpy.ndarray' and 'bool'
CNo error, output: [4 5]
DValueError: The truth value of an array with more than one element is ambiguous
Attempts:
2 left
💡 Hint
Check how boolean arrays compare with True in NumPy.
🚀 Application
advanced
2:30remaining
Filter and modify array elements using boolean masking
Given the array, which option correctly doubles only the elements less than 10 using boolean masking?
NumPy
import numpy as np
arr = np.array([4, 11, 7, 15, 3])
# Your code here to double elements < 10
A
arr[arr &lt; 10] = arr[arr &lt; 10] + 2
print(arr)
B
arr[arr &lt; 10] = arr[arr &lt; 10] * 2
print(arr)
C
arr[arr &lt; 10] = arr * 2
print(arr)
D
arr[arr &gt; 10] = arr[arr &gt; 10] * 2
print(arr)
Attempts:
2 left
💡 Hint
Focus on selecting elements less than 10 and multiplying them by 2.
🧠 Conceptual
expert
1:30remaining
Why is boolean masking preferred over loops in NumPy?
Which reason best explains why boolean masking is preferred over explicit Python loops for filtering NumPy arrays?
ABoolean masking uses vectorized operations that are faster and more efficient than Python loops.
BBoolean masking requires less memory than loops because it copies data.
CLoops are not supported on NumPy arrays, so boolean masking is the only option.
DBoolean masking automatically sorts the filtered data, which loops cannot do.
Attempts:
2 left
💡 Hint
Think about speed and efficiency of operations in NumPy.

Practice

(1/5)
1. What is the main purpose of boolean masking in numpy?
easy
A. To sort an array in ascending order
B. To select elements from an array based on True/False conditions
C. To change the data type of an array
D. To create a new array filled with zeros

Solution

  1. Step 1: Understand boolean masking concept

    Boolean masking uses a True/False array to pick elements from another array.
  2. Step 2: Identify the main use

    This helps select only the elements where the mask is True, filtering data easily.
  3. Final Answer:

    To select elements from an array based on True/False conditions -> Option B
  4. Quick Check:

    Boolean mask = select elements [OK]
Hint: Boolean mask picks elements where condition is True [OK]
Common Mistakes:
  • Thinking it sorts the array
  • Confusing masking with data type change
  • Assuming it fills arrays with zeros
2. Which of the following is the correct syntax to create a boolean mask for array arr to select values greater than 5?
easy
A. mask = arr > 5
B. mask = arr = 5
C. mask = arr < 5
D. mask = arr == 5

Solution

  1. Step 1: Understand comparison operators

    To select values greater than 5, use the greater than operator: >.
  2. Step 2: Check syntax correctness

    mask = arr > 5 creates a boolean array where True means element > 5.
  3. Final Answer:

    mask = arr > 5 -> Option A
  4. Quick Check:

    Use > for greater than [OK]
Hint: Use > operator to create mask for values greater than number [OK]
Common Mistakes:
  • Using single equals (=) instead of comparison (>)
  • Using < instead of >
  • Using == which checks equality, not greater than
3. Given the code:
import numpy as np
arr = np.array([2, 7, 4, 9, 1])
mask = arr > 4
result = arr[mask]

What is the value of result?
medium
A. [2, 7, 9]
B. [2, 4, 1]
C. [7, 4, 9]
D. [7, 9]

Solution

  1. Step 1: Create boolean mask for elements > 4

    Elements greater than 4 are 7 and 9, so mask is [False, True, False, True, False].
  2. Step 2: Apply mask to array

    Using arr[mask] selects elements where mask is True: [7, 9].
  3. Final Answer:

    [7, 9] -> Option D
  4. Quick Check:

    Mask picks elements > 4 [OK]
Hint: Mask True picks elements, False skips [OK]
Common Mistakes:
  • Including elements not > 4
  • Confusing mask with index positions
  • Selecting elements less than or equal to 4
4. What is wrong with this code snippet?
import numpy as np
arr = np.array([1, 3, 5, 7])
mask = arr > 4
print(arr[mask])

It raises an error. Why?
medium
A. The mask is created correctly; no error occurs
B. The mask uses assignment (=) instead of comparison (>)
C. The array contains non-numeric values causing error
D. The mask array has different length than arr

Solution

  1. Step 1: Check mask creation

    The mask arr > 4 creates a boolean array of same length as arr without error.
  2. Step 2: Check indexing with mask

    Using arr[mask] selects elements > 4 without error.
  3. Final Answer:

    The mask is created correctly; no error occurs -> Option A
  4. Quick Check:

    Correct mask syntax means no error [OK]
Hint: Correct mask syntax means no error [OK]
Common Mistakes:
  • Confusing assignment (=) with comparison (>)
  • Assuming mask length mismatch error
  • Thinking non-numeric values cause error here
5. You have a numpy array data = np.array([10, 0, 5, -3, 8]). You want to select only positive numbers excluding zero using boolean masking. Which code correctly achieves this?
hard
A. mask = data >= 0 result = data[mask]
B. mask = data != 0 result = data[mask]
C. mask = data > 0 result = data[mask]
D. mask = data < 0 result = data[mask]

Solution

  1. Step 1: Define condition for positive numbers excluding zero

    Positive numbers are greater than zero, so condition is data > 0.
  2. Step 2: Apply mask and select elements

    Using data[data > 0] selects 10, 5, and 8, excluding zero and negatives.
  3. Final Answer:

    mask = data > 0 result = data[mask] -> Option C
  4. Quick Check:

    Use > 0 to exclude zero and negatives [OK]
Hint: Use > 0 to select positive numbers excluding zero [OK]
Common Mistakes:
  • Using >= 0 includes zero
  • Using != 0 includes negatives
  • Using < 0 selects negatives, not positives