np.full() for custom-filled arrays in NumPy - Time & Space Complexity
We want to understand how the time needed to create an array filled with a specific value changes as the array size grows.
How does the work increase when we ask numpy to fill bigger arrays?
Analyze the time complexity of the following code snippet.
import numpy as np
# Create a 1D array of size n filled with the value 7
n = 1000
arr = np.full(n, 7)
This code creates a numpy array of length n, filling every element with the number 7.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Filling each element of the array with the given value.
- How many times: Exactly once for each element, so
ntimes.
As the array size grows, the time to fill it grows in direct proportion.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 10 fill operations |
| 100 | 100 fill operations |
| 1000 | 1000 fill operations |
Pattern observation: Doubling the size doubles the work needed to fill the array.
Time Complexity: O(n)
This means the time to create and fill the array grows linearly with the number of elements.
[X] Wrong: "np.full() fills the array instantly regardless of size because it uses a shortcut."
[OK] Correct: Even though numpy is fast, it must still set each element, so time grows with array size.
Understanding how array creation scales helps you reason about data preparation speed, a key skill in data science and coding interviews.
What if we changed np.full() to create a 2D array of size n by m? How would the time complexity change?
Practice
np.full() function do in NumPy?Solution
Step 1: Understand the purpose of np.full()
The function np.full() is designed to create arrays where every element has the same value.Step 2: Compare with other array creation functions
Unlike functions that create random or sequential arrays, np.full() fills the array with a constant value.Final Answer:
Creates an array filled with the same specified value -> Option DQuick Check:
np.full() = constant value array [OK]
- Confusing np.full() with np.random functions
- Thinking it creates empty or zero arrays
- Assuming it creates sequences of numbers
np.full()?Solution
Step 1: Identify the correct parameter order for np.full()
np.full() takes the shape as the first argument (tuple), then the fill value as the second argument.Step 2: Check each option's syntax
np.full((3, 3), 7) uses np.full((3, 3), 7) which matches the correct order and types. Others misuse argument order or syntax.Final Answer:
np.full((3, 3), 7) -> Option AQuick Check:
Shape tuple first, fill value second [OK]
- Passing shape and value as separate arguments without tuple
- Using keyword arguments incorrectly
- Swapping the order of shape and fill value
import numpy as np arr = np.full((2, 2), 5) print(arr)
Solution
Step 1: Understand np.full() parameters
The shape is (2, 2), so the array will have 2 rows and 2 columns. The fill value is 5.Step 2: Predict the printed array
The array will be a 2x2 matrix with all elements equal to 5, printed as [[5 5]\n [5 5]].Final Answer:
[[5 5] [5 5]] -> Option AQuick Check:
Shape (2,2) with 5 fills = [[5 5]\n [5 5]] [OK]
- Confusing shape dimensions
- Expecting zeros instead of fill value
- Misreading the printed array shape
import numpy as np arr = np.full(3, 4, 2) print(arr)
Solution
Step 1: Check np.full() argument count and order
np.full(shape, fill_value, dtype=None, ...). The call np.full(3, 4, 2) sets shape=3, fill_value=4, dtype=2, but 2 is not a valid dtype (raises ValueError: data type "2" not understood).Step 2: Confirm correct usage
Correct syntax is np.full(3, 4) for 1D array of 4s, or specify valid dtype like dtype=float. Extra or invalid dtype causes error.Final Answer:
The third positional argument `2` is an invalid dtype specifier -> Option CQuick Check:
np.full(3,4,2) -> ValueError: data type "2" [OK]
- Passing multiple positional arguments instead of tuple shape
- Using wrong data types for shape
- Assuming np.full() needs three arguments
np.full() and other NumPy functions?Solution
Step 1: Create a 4x4 array filled with 9
Using np.full((4,4), 9) creates a 4x4 array where every element is 9.Step 2: Replace diagonal elements with 0
np.fill_diagonal(arr, 0) sets the diagonal elements of the array to 0.Step 3: Verify the output
Printing arr shows a 4x4 array with 9 everywhere except 0 on the diagonal.Final Answer:
arr = np.full((4,4), 9); np.fill_diagonal(arr, 0); print(arr) -> Option BQuick Check:
Fill then fill_diagonal for custom values [OK]
- Filling zeros first then trying to fill diagonal with 9
- Using wrong shape or 1D array for 2D problem
- Misusing np.fill_diagonal on 1D arrays
Ready to prove it?
Pass the test and this pattern moves unknown
