np.arange() for range arrays in NumPy - Time & Space Complexity
We want to understand how the time to create arrays with np.arange() changes as the size of the array grows.
How does the work needed grow when we ask for bigger ranges?
Analyze the time complexity of the following code snippet.
import numpy as np
arr = np.arange(0, n, 1)
This code creates a NumPy array starting at 0 up to (but not including) n, stepping by 1.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Filling each element of the array with a value from 0 to n-1.
- How many times: Exactly n times, once for each element.
As n grows, the number of operations grows directly with n because each element must be set.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 10 |
| 100 | 100 |
| 1000 | 1000 |
Pattern observation: The operations grow in a straight line with the input size.
Time Complexity: O(n)
This means the time to create the array grows directly in proportion to the number of elements requested.
[X] Wrong: "Creating an array with np.arange() is instant and does not depend on size."
[OK] Correct: Even though np.arange() is fast, it still needs to fill each element, so time grows with the number of elements.
Understanding how array creation scales helps you reason about data preparation steps in real projects and interviews.
What if we changed the step size from 1 to 2? How would the time complexity change?
Practice
np.arange(3) produce?Solution
Step 1: Understand default start value
If only one number is given,np.arangestarts from 0 by default.Step 2: Identify stop value exclusion
The stop value 3 is excluded, so the array includes 0, 1, 2.Final Answer:
[0, 1, 2] -> Option AQuick Check:
Start=0, stop=3 excluded, so [0,1,2] [OK]
- Including the stop value in the array
- Starting from 1 instead of 0
- Confusing step with stop
np.arange()?Solution
Step 1: Check start, stop, and step order
Start should be less than stop for positive step; step cannot be zero.Step 2: Validate each option
np.arange(2, 6, 1) uses start=2, stop=6, step=1 correctly. np.arange(6, 2, 1) reverses start and stop. np.arange(2, 7) sets stop=7, producing [2 3 4 5 6] which includes 6. np.arange(2, 6, 0) has step=0 which is invalid.Final Answer:
np.arange(2, 6, 1) -> Option DQuick Check:
Start=2, stop=6, step=1 is correct syntax [OK]
- Using zero as step value
- Reversing start and stop values
- Using wrong stop value
import numpy as np arr = np.arange(1, 10, 3) print(arr)
Solution
Step 1: Understand parameters of np.arange
Start=1, stop=10 (excluded), step=3 means numbers start at 1 and increase by 3 until less than 10.Step 2: Calculate values
Values are 1, 4 (1+3), 7 (4+3). Next would be 10 which is excluded.Final Answer:
[1 4 7] -> Option AQuick Check:
Start=1, step=3, stop=10 excluded gives [1,4,7] [OK]
- Including stop value 10
- Adding step incorrectly
- Confusing step with stop
import numpy as np arr = np.arange(5, 2, 1) print(arr)
Solution
Step 1: Analyze start, stop, and step values
Start=5, stop=2, step=1 means counting up from 5 to less than 2, which is impossible.Step 2: Understand np.arange behavior
Since step is positive but start > stop, no values satisfy condition, so result is empty array.Final Answer:
It produces an empty array -> Option BQuick Check:
Positive step with start > stop gives empty array [OK]
- Expecting reversed array without negative step
- Thinking it raises error
- Confusing start and stop order
np.arange() call is correct?Solution
Step 1: Identify start, stop, and step for decreasing sequence
Start=10, stop=0 (excluded), step must be negative to decrease.Step 2: Check each option
np.arange(10, 0, -2) uses step=-2 correctly. np.arange(10, 0, 2) has positive step, so no values. Options C and D start at 0, which is not desired.Final Answer:
np.arange(10, 0, -2) -> Option CQuick Check:
Decreasing sequence needs negative step [OK]
- Using positive step for decreasing sequence
- Swapping start and stop values
- Starting at stop value instead of start
Ready to prove it?
Pass the test and this pattern moves unknown
