Bird
Raised Fist0
NumPydata~5 mins

Why boolean masking matters in NumPy

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
Introduction

Boolean masking helps you pick out only the data you want from a big set. It makes finding and working with specific parts easy and fast.

You want to find all students who scored above 80 in a test.
You need to select only the days when the temperature was below freezing.
You want to filter out bad data points from a sensor reading.
You want to quickly find all products that are out of stock.
You want to analyze only the sales made in a specific region.
Syntax
NumPy
masked_array = original_array[boolean_condition]
The boolean_condition is an array of True/False values the same size as original_array.
Only elements where the condition is True are kept in masked_array.
Examples
This picks numbers greater than 25 from the array.
NumPy
import numpy as np
arr = np.array([10, 20, 30, 40, 50])
mask = arr > 25
filtered = arr[mask]
print(filtered)
This selects only odd numbers from the array.
NumPy
import numpy as np
arr = np.array([5, 15, 25, 35, 45])
filtered = arr[arr % 2 == 1]
print(filtered)
Sample Program

This program shows how to find temperatures below zero using boolean masking. It prints the original temperatures, the mask of True/False for cold days, and the filtered cold temperatures.

NumPy
import numpy as np

# Create an array of temperatures in Celsius
temps = np.array([22, -5, 15, 0, -10, 30, 5])

# Create a mask for temperatures below zero
cold_days = temps < 0

# Use boolean masking to get only cold days
cold_temps = temps[cold_days]

print("All temperatures:", temps)
print("Cold days mask:", cold_days)
print("Temperatures below zero:", cold_temps)
OutputSuccess
Important Notes

Boolean masks must be the same shape as the array you want to filter.

Boolean masking is very fast and works well with large data sets.

You can combine multiple conditions using & (and) and | (or) with parentheses.

Summary

Boolean masking helps select specific data easily.

It uses True/False arrays to pick elements.

It is useful for filtering and analyzing data quickly.

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