Array creation (array, arange, linspace) in Data Analysis Python - Time & Space Complexity
When we create arrays using functions like array, arange, or linspace, it is important to understand how the time to create these arrays grows as the size increases.
We want to know how the work done changes when we ask for bigger arrays.
Analyze the time complexity of the following code snippet.
import numpy as np
size = 1000
arr1 = np.array(list(range(size)))
arr2 = np.arange(size)
arr3 = np.linspace(0, 10, size)
This code creates three arrays of the same size using three different NumPy functions.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Creating each element of the array one by one.
- How many times: Exactly
sizetimes for each array creation.
As the requested array size grows, the time to create the array grows roughly in direct proportion.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 10 operations |
| 100 | 100 operations |
| 1000 | 1000 operations |
Pattern observation: Doubling the size roughly doubles the work needed to create the array.
Time Complexity: O(n)
This means the time to create the array grows linearly with the number of elements you want.
[X] Wrong: "Creating an array with linspace is faster because it just calculates start and end points."
[OK] Correct: Even though linspace calculates evenly spaced points, it still needs to generate each element, so the time grows with the number of points.
Understanding how array creation scales helps you reason about data preparation steps in real projects, showing you can think about efficiency beyond just writing code.
"What if we create an array by repeating a single value n times? How would the time complexity change?"
Practice
np.arange(1, 5) produce in Python's NumPy?Solution
Step 1: Understand np.arange parameters
np.arange(start, stop)creates values from start up to but not including stop.Step 2: Apply to np.arange(1, 5)
Values start at 1 and go up to 4 (5 is excluded), so the array is [1, 2, 3, 4].Final Answer:
An array with values [1, 2, 3, 4] -> Option DQuick Check:
arange excludes stop = [1, 2, 3, 4] [OK]
- Including the stop value in the output
- Starting from 0 instead of the given start
- Confusing arange with linspace
[10, 20, 30]?Solution
Step 1: Recall np.array syntax
np.array()takes a single list or iterable as input to create an array.Step 2: Check each option
np.array([10, 20, 30]) correctly passes a list inside brackets. np.array(10, 20, 30) passes separate arguments, which is invalid. np.arange([10, 20, 30]) uses arange incorrectly. np.linspace(10, 20, 30) uses linspace which is for ranges, not lists.Final Answer:
np.array([10, 20, 30]) -> Option AQuick Check:
np.array needs a list inside brackets [OK]
- Passing multiple arguments instead of a list
- Using arange or linspace to convert lists
- Forgetting brackets around the list
import numpy as np arr = np.linspace(0, 1, 5) print(arr)
Solution
Step 1: Understand np.linspace parameters
np.linspace(start, stop, num)creates num evenly spaced points from start to stop inclusive.Step 2: Apply to np.linspace(0, 1, 5)
It creates 5 points between 0 and 1: 0.0, 0.25, 0.5, 0.75, 1.0.Final Answer:
[0. 0.25 0.5 0.75 1. ] -> Option CQuick Check:
linspace includes stop and divides evenly [OK]
- Confusing linspace with arange step behavior
- Expecting stop to be excluded
- Wrong number of points generated
import numpy as np arr = np.arange(0, 10, 3.5) print(arr)
Solution
Step 1: Check np.arange with float steps
NumPy's arange supports float step values, so 3.5 is valid.Step 2: Predict output of np.arange(0, 10, 3.5)
Values start at 0, then 3.5, then 7.0. Next would be 10.5 which exceeds stop 10, so stops.Final Answer:
The code runs correctly and prints [0. 3.5 7.] -> Option BQuick Check:
arange accepts float steps and excludes stop [OK]
- Assuming arange only works with integers
- Expecting stop value to be included
- Forgetting to import numpy
Solution
Step 1: Understand the requirement
We need 4 numbers starting at 2 and ending at 5, including both ends.Step 2: Check np.arange options
np.arange(2, 5, 1) creates [2, 3, 4], only 3 numbers and excludes 5. np.arange(2, 6, 2) creates [2, 4], wrong number of elements and values.Step 3: Check np.linspace options
np.linspace(2, 5, 4) creates 4 evenly spaced numbers including 2 and 5: [2.0, 3.0, 4.0, 5.0]. np.linspace(2, 5, 3) creates only 3 numbers.Final Answer:
np.linspace(2, 5, 4) -> Option AQuick Check:
linspace fixes number of points including ends [OK]
- Using arange which excludes stop and depends on step size
- Choosing wrong number of points in linspace
- Confusing arange and linspace behavior
Ready to prove it?
Pass the test and this pattern moves unknown
