np.array() from Python lists in NumPy - Time & Space Complexity
When we create a numpy array from a Python list, the computer copies data from the list into a new structure.
We want to know how the time needed grows as the list gets bigger.
Analyze the time complexity of the following code snippet.
import numpy as np
n = 10
py_list = [i for i in range(n)]
p_array = np.array(py_list)
This code creates a Python list of size n and then converts it into a numpy array.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Copying each element from the Python list into the numpy array.
- How many times: Once for each element, so n times.
As the list size grows, the time to copy grows proportionally.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | About 10 copy steps |
| 100 | About 100 copy steps |
| 1000 | About 1000 copy steps |
Pattern observation: Doubling the list size roughly doubles the time needed.
Time Complexity: O(n)
This means the time to create the numpy array grows directly with the number of elements in the list.
[X] Wrong: "Creating a numpy array from a list is instant and does not depend on list size."
[OK] Correct: The data must be copied element by element, so bigger lists take more time.
Understanding how data conversion scales helps you explain performance in real projects and shows you know how data structures work under the hood.
"What if we create a numpy array directly from a generator instead of a list? How would the time complexity change?"
Practice
np.array() do when given a Python list?Solution
Step 1: Understand the purpose of np.array()
np.array() is designed to convert Python lists into numpy arrays.Step 2: Recognize the benefit of numpy arrays
Numpy arrays allow fast, element-wise math operations that lists do not support.Final Answer:
It converts the list into a numpy array for easier math operations. -> Option AQuick Check:
np.array() converts lists to arrays [OK]
- Thinking np.array() sorts the list
- Confusing arrays with dictionaries
- Assuming it removes duplicates
[1, 2, 3]?Solution
Step 1: Recall correct function call syntax
np.array() requires parentheses and a list inside, like np.array([1, 2, 3]).Step 2: Identify syntax errors in other options
np.array{1, 2, 3} uses curly braces which is invalid; C passes multiple arguments instead of one list; D uses double brackets incorrectly.Final Answer:
np.array([1, 2, 3]) -> Option DQuick Check:
np.array() needs a list inside parentheses [OK]
- Using curly braces instead of parentheses
- Passing multiple arguments instead of a single list
- Using double brackets incorrectly
import numpy as np lst = [[1, 2], [3, 4]] arr = np.array(lst) print(arr.shape)
Solution
Step 1: Understand the input list shape
The list has 2 sublists, each with 2 elements, so shape is 2 rows and 2 columns.Step 2: Check numpy array shape property
np.array converts nested lists into 2D arrays with shape (2, 2).Final Answer:
(2, 2) -> Option CQuick Check:
Nested list shape = (2, 2) [OK]
- Thinking shape is (4,)
- Assuming shape is (1, 4)
- Expecting an error for nested lists
import numpy as np lst = [1, 2, 3] arr = np.array(lst, 5) print(arr)
Solution
Step 1: Check np.array() function signature
np.array() takes the data as the first argument; a second positional argument like 5 is invalid.Step 2: Identify the error caused by extra argument
Passing 5 as a second positional argument causes a TypeError.Final Answer:
np.array() does not take a second positional argument like 5. -> Option BQuick Check:
Extra positional arguments cause error [OK]
- Thinking list must be nested
- Forgetting print() needs parentheses (Python 3)
- Believing integers are not allowed in arrays
temps = [[20, 22, 19], [21, 23, 20], [19, 21, 18], [22, 24, 21], [20, 22, 19], [18, 20, 17], [21, 23, 20]]
How can you convert this into a numpy array and find the average temperature for each day?
Solution
Step 1: Convert list of lists to numpy array
Use np.array(temps) to create a 2D array where each row is a day.Step 2: Calculate average temperature per day
Use mean(axis=1) to compute average across columns (hours) for each row (day).Final Answer:
import numpy as np temps_arr = np.array(temps) daily_avg = temps_arr.mean(axis=1) print(daily_avg) -> Option AQuick Check:
mean(axis=1) averages rows (days) [OK]
- Using mean(axis=0) which averages columns (hours)
- Using sum() without axis for average
- Using max() instead of mean()
Ready to prove it?
Pass the test and this pattern moves unknown
