Bird
Raised Fist0
NumPydata~5 mins

np.vstack() and np.hstack() in NumPy - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: np.vstack() and np.hstack()
O(n)
Understanding Time Complexity

We want to understand how the time needed to join arrays grows as the arrays get bigger.

How does stacking arrays vertically or horizontally affect the work done by numpy?

Scenario Under Consideration

Analyze the time complexity of the following code snippet.

import numpy as np

arr1 = np.ones((1000, 10))
arr2 = np.zeros((1000, 10))

vstacked = np.vstack((arr1, arr2))
hstacked = np.hstack((arr1, arr2))

This code stacks two arrays: one on top of the other (vertical) and side by side (horizontal).

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: Copying all elements from input arrays into a new larger array.
  • How many times: Once for each element in the input arrays.
How Execution Grows With Input

As the size of the input arrays grows, the time to copy all elements grows proportionally.

Input Size (rows x cols)Approx. Operations
10 x 10~200 (copying elements twice)
100 x 10~2,000
1000 x 10~20,000

Pattern observation: The operations grow roughly in direct proportion to the total number of elements copied.

Final Time Complexity

Time Complexity: O(n)

This means the time to stack arrays grows linearly with the total number of elements involved.

Common Mistake

[X] Wrong: "Stacking arrays is instant or very fast regardless of size because it just links arrays together."

[OK] Correct: Actually, numpy creates a new array and copies all elements, so the time depends on how many elements are copied.

Interview Connect

Knowing how array operations scale helps you write efficient data processing code and explain your choices clearly in interviews.

Self-Check

What if we stacked three or more arrays instead of two? How would the time complexity change?

Practice

(1/5)
1. What does np.vstack() do with arrays?
easy
A. Stacks arrays vertically, adding rows
B. Stacks arrays horizontally, adding columns
C. Flattens arrays into one dimension
D. Splits arrays into smaller parts

Solution

  1. Step 1: Understand vertical stacking

    np.vstack() stacks arrays by adding rows one below another.
  2. Step 2: Compare with horizontal stacking

    np.hstack() stacks arrays side by side by adding columns, so it is different.
  3. Final Answer:

    Stacks arrays vertically, adding rows -> Option A
  4. Quick Check:

    np.vstack() = vertical stack [OK]
Hint: Remember 'v' in vstack means vertical stacking [OK]
Common Mistakes:
  • Confusing vertical and horizontal stacking
  • Thinking vstack flattens arrays
  • Assuming vstack splits arrays
2. Which of the following is the correct syntax to horizontally stack two arrays a and b using NumPy?
easy
A. np.hstack(a, b)
B. np.hstack[a, b]
C. np.hstack((a, b))
D. np.hstack{a, b}

Solution

  1. Step 1: Check function call syntax

    NumPy functions use parentheses and tuples for multiple arrays, so np.hstack((a, b)) is correct.
  2. Step 2: Identify incorrect syntax

    Square brackets, missing parentheses, or curly braces are invalid for function calls in Python.
  3. Final Answer:

    np.hstack((a, b)) -> Option C
  4. Quick Check:

    Correct function call uses parentheses and tuple [OK]
Hint: Use double parentheses for multiple arrays in hstack [OK]
Common Mistakes:
  • Using square brackets instead of parentheses
  • Passing arrays without tuple parentheses
  • Using curly braces which are invalid
3. What is the output of the following code?
import numpy as np
x = np.array([[1, 2], [3, 4]])
y = np.array([[5, 6], [7, 8]])
result = np.vstack((x, y))
print(result)
medium
A. [[1 2 5 6] [3 4 7 8]]
B. [[1 2 3 4] [5 6 7 8]]
C. [[1 2] [5 6] [3 4] [7 8]]
D. [[1 2] [3 4] [5 6] [7 8]]

Solution

  1. Step 1: Understand np.vstack behavior

    It stacks arrays vertically, so rows of y come below rows of x.
  2. Step 2: Combine arrays row-wise

    Result has 4 rows: first two from x, next two from y, each with 2 columns.
  3. Final Answer:

    [[1 2] [3 4] [5 6] [7 8]] -> Option D
  4. Quick Check:

    Vertical stack adds rows below [OK]
Hint: vstack adds rows; hstack adds columns [OK]
Common Mistakes:
  • Confusing vstack with hstack output
  • Expecting horizontal concatenation
  • Misreading array shapes
4. What error will occur when running this code?
import numpy as np
a = np.array([1, 2, 3])
b = np.array([[4, 5, 6], [7, 8, 9]])
result = np.hstack((a, b))
print(result)
medium
A. No error, outputs concatenated array
B. TypeError because inputs are not lists
C. SyntaxError due to wrong function call
D. ValueError due to incompatible shapes

Solution

  1. Step 1: Check shapes of arrays

    a is shape (3,), b is shape (2,3). They differ in first dimension.
  2. Step 2: Understand hstack requirements

    np.hstack() stacks arrays along their second axis if possible. Here, a is 1D and b is 2D, but NumPy broadcasts a to shape (1,3) and stacks along axis 1, resulting in shape (3,3).
  3. Step 3: Result

    No error occurs; arrays are concatenated.
  4. Final Answer:

    No error, outputs concatenated array -> Option A
  5. Quick Check:

    NumPy broadcasts 1D array and concatenates [OK]
Hint: NumPy can broadcast 1D arrays when stacking [OK]
Common Mistakes:
  • Assuming hstack requires same number of rows
  • Confusing ValueError with TypeError
  • Ignoring NumPy broadcasting rules
5. Given two arrays:
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6, 7], [8, 9, 10]])
Which method correctly combines them into a single array with shape (2, 5) by stacking horizontally?
hard
A. np.vstack((a, b))
B. np.hstack((a, b))
C. np.hstack((a.T, b.T)).T
D. np.vstack((a.T, b.T)).T

Solution

  1. Step 1: Check shapes of arrays

    a shape is (2, 2), b shape is (2, 3). Both have 2 rows, so horizontal stacking is possible.
  2. Step 2: Apply np.hstack

    np.hstack((a, b)) concatenates columns, resulting in shape (2, 5).
  3. Step 3: Verify other options

    np.vstack((a, b)) would fail due to different column counts; transposes complicate shape and are unnecessary here.
  4. Final Answer:

    np.hstack((a, b)) -> Option B
  5. Quick Check:

    Same rows, hstack adds columns [OK]
Hint: For same rows, use hstack to add columns [OK]
Common Mistakes:
  • Using vstack with different column counts
  • Overcomplicating with transpose
  • Mixing up row and column dimensions
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard