Boolean type in NumPy - Time & Space Complexity
We want to understand how fast operations with Boolean arrays run in numpy.
How does the time needed change when the array gets bigger?
Analyze the time complexity of the following code snippet.
import numpy as np
arr = np.random.choice([True, False], size=1000)
result = np.sum(arr)
This code creates a Boolean array and counts how many True values it has.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Checking each element in the Boolean array to count True values.
- How many times: Once for every element in the array.
As the array gets bigger, the time to count True values grows in a straight line.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 10 checks |
| 100 | 100 checks |
| 1000 | 1000 checks |
Pattern observation: Doubling the array size doubles the work needed.
Time Complexity: O(n)
This means the time grows directly with the number of elements in the array.
[X] Wrong: "Counting True values is instant and does not depend on array size."
[OK] Correct: The code must check each element once, so bigger arrays take more time.
Knowing how Boolean operations scale helps you explain performance clearly and shows you understand data handling basics.
"What if we used a numpy function that stops early when a True is found? How would the time complexity change?"
Practice
bool type in numpy represent?Solution
Step 1: Understand the boolean type meaning
The boolean type stores only two possible values: True or False.Step 2: Compare with other types
Integer, float, and string types store numbers or text, not boolean values.Final Answer:
Values that are either True or False -> Option AQuick Check:
Boolean type = True/False [OK]
- Confusing boolean with integer or float
- Thinking boolean stores text
- Assuming boolean can store multiple values
Solution
Step 1: Check dtype for boolean array
To create a boolean array, use dtype=bool with True/False values.Step 2: Validate options
np.array([True, False, True], dtype=bool) uses correct dtype and values. np.array([1, 0, 1], dtype=str) uses string dtype, not boolean. np.array([True, False, True], dtype=int) uses int dtype. np.array(['True', 'False'], dtype=bool) uses strings 'True', 'False' which are not boolean values.Final Answer:
np.array([True, False, True], dtype=bool) -> Option BQuick Check:
Boolean array needs dtype=bool [OK]
- Using string values instead of boolean
- Setting wrong dtype like int or str
- Confusing True/False strings with boolean
import numpy as np arr = np.array([1, 2, 3, 4, 5]) mask = arr > 3 print(mask)
Solution
Step 1: Evaluate the condition arr > 3
For each element in arr, check if it is greater than 3: 1>3 False, 2>3 False, 3>3 False, 4>3 True, 5>3 True.Step 2: Understand the mask output
The mask is a boolean array showing True where condition is met, False otherwise: [False False False True True].Final Answer:
[False False False True True] -> Option CQuick Check:
Condition mask = [False False False True True] [OK]
- Confusing boolean mask with integer 1/0
- Expecting filtered values instead of mask
- Mixing up True and False positions
import numpy as np arr = np.array([10, 20, 30]) mask = arr = 20 print(mask)
Solution
Step 1: Identify the assignment vs comparison
The code uses 'mask = arr = 20' which assigns 20 to arr and mask, not a comparison.Step 2: Correct the comparison operator
To create a boolean mask, use 'mask = arr == 20' to compare each element with 20.Final Answer:
Using '=' instead of '==' for comparison -> Option DQuick Check:
Use '==' for comparison, '=' is assignment [OK]
- Using single '=' instead of '=='
- Confusing assignment with comparison
- Expecting boolean mask but getting int
data = np.array([5, 10, 15, 20, 25]), how can you use a boolean mask to select only values greater than 12 and less than 22?Solution
Step 1: Create correct boolean mask with logical AND
To select values greater than 12 and less than 22, use element-wise AND: (data > 12) & (data < 22).Step 2: Apply mask to data array
Use the mask to index data: data[mask] returns values meeting both conditions.Final Answer:
mask = (data > 12) & (data < 22); result = data[mask] -> Option AQuick Check:
Use '&' for element-wise AND in numpy [OK]
- Using 'and' or 'or' instead of '&' or '|'
- Forgetting parentheses around conditions
- Using '|' (OR) instead of '&' (AND) for both conditions
Ready to prove it?
Pass the test and this pattern moves unknown
