Creating boolean arrays in NumPy - Performance & Efficiency
Start learning this pattern below
Jump into concepts and practice - no test required
We want to understand how long it takes to create boolean arrays using numpy as the input size grows.
Specifically, how does the time needed change when we make bigger arrays?
Analyze the time complexity of the following code snippet.
import numpy as np
n = 1000000
arr = np.arange(n)
bool_arr = arr % 2 == 0
This code creates an array of numbers from 0 to n-1, then makes a boolean array marking even numbers.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Checking each element in the array to see if it is even.
- How many times: Once for every element, so n times.
As the array size grows, the time to create the boolean array grows roughly in direct proportion.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 10 checks |
| 100 | 100 checks |
| 1000 | 1000 checks |
Pattern observation: Doubling the input doubles the work needed.
Time Complexity: O(n)
This means the time to create the boolean array grows linearly with the number of elements.
[X] Wrong: "Creating a boolean array is instant and does not depend on array size."
[OK] Correct: Each element must be checked to decide True or False, so time grows with array size.
Understanding how array operations scale helps you explain efficiency clearly in interviews and shows you know how data size affects performance.
"What if we create a boolean array by comparing to a fixed value instead of using a modulo operation? How would the time complexity change?"
Practice
numpy represent?Solution
Step 1: Understand boolean arrays
A boolean array stores True or False for each element, usually from a condition.Step 2: Identify the correct description
The description 'An array of True/False values based on a condition' matches what a boolean array represents. Others refer to integers, strings, or zeros.Final Answer:
An array of True/False values based on a condition -> Option BQuick Check:
Boolean array = True/False values [OK]
- Thinking boolean arrays hold numbers or strings
- Confusing boolean arrays with integer arrays
arr to check where elements are greater than 5?Solution
Step 1: Understand the condition for boolean array
We want True where elements are greater than 5, so the condition isarr > 5.Step 2: Match the correct syntax
bool_arr = arr > 5usesarr > 5, which is correct.arr >= 5checks greater than or equal to 5,arr == 5checks equality to 5, andarr < 5checks less than 5.Final Answer:
bool_arr = arr > 5 -> Option AQuick Check:
Condition for > 5 isarr > 5[OK]
- Using == instead of > for greater than
- Confusing >= with >
- Using wrong comparison operator
import numpy as np arr = np.array([2, 7, 4, 9]) bool_arr = arr < 5 print(bool_arr)
Solution
Step 1: Evaluate the condition arr < 5 for each element
Elements: 2 < 5 is True, 7 < 5 is False, 4 < 5 is True, 9 < 5 is False.Step 2: Form the boolean array
The boolean array is [True, False, True, False].Final Answer:
[True False True False] -> Option AQuick Check:
Check each element < 5 = [True False True False] [OK]
- Mixing up True and False values
- Forgetting to use < operator correctly
import numpy as np arr = np.array([10, 5, 10, 3]) bool_arr = arr = 10 print(bool_arr)
Solution
Step 1: Check the comparison operator
The code usesarr = 10which assigns 10 to arr, not compares.Step 2: Correct operator for comparison
To compare elements to 10, usearr == 10to create a boolean array.Final Answer:
Using '=' instead of '==' for comparison -> Option CQuick Check:
Comparison needs '==' not '=' [OK]
- Using single '=' instead of '=='
- Confusing assignment with comparison
data = np.array([3, 8, 1, 6, 0]), how can you create a boolean array that is True for elements greater than 2 and less than 7?Solution
Step 1: Understand element-wise logical operations in numpy
Use bitwise operators & and | for element-wise AND/OR, not 'and' or 'or'.Step 2: Apply correct syntax for combined condition
bool_arr = (data > 2) & (data < 7)uses(data > 2) & (data < 7), which is correct for element-wise AND.Final Answer:
bool_arr = (data > 2) & (data < 7) -> Option DQuick Check:
Use & for element-wise AND in numpy [OK]
- Using 'and' instead of '&' for element-wise AND
- Using '&&' which is invalid in Python
- Using 'or' instead of '&' for AND condition
