Bird
Raised Fist0
NumPydata~5 mins

reshape() for changing dimensions in NumPy - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: reshape() for changing dimensions
O(1)
Understanding Time Complexity

We want to understand how the time needed to reshape an array changes as the array size grows.

Specifically, how does numpy's reshape() handle bigger arrays?

Scenario Under Consideration

Analyze the time complexity of the following code snippet.

import numpy as np

arr = np.arange(1000)  # Create an array with 1000 elements
reshaped_arr = arr.reshape(100, 10)  # Change shape to 100 rows and 10 columns

This code creates a 1D array and reshapes it into a 2D array without copying data.

Identify Repeating Operations

Look for loops or repeated steps inside reshape.

  • Primary operation: Adjusting the view metadata to new shape.
  • How many times: No element-wise copying or looping over all elements.
How Execution Grows With Input

Reshape changes the shape info but does not move data, so time stays almost the same.

Input Size (n)Approx. Operations
10Very few operations
100Very few operations
1000Very few operations

Pattern observation: Time does not grow with input size because no data copying happens.

Final Time Complexity

Time Complexity: O(1)

This means reshaping an array takes about the same time no matter how big the array is.

Common Mistake

[X] Wrong: "Reshape loops through all elements and takes longer for bigger arrays."

[OK] Correct: Reshape only changes how data is viewed, not the data itself, so it runs quickly regardless of size.

Interview Connect

Knowing that reshape is fast helps you explain efficient data handling in real projects.

Self-Check

"What if reshape had to copy data instead of just changing the view? How would the time complexity change?"

Practice

(1/5)
1. What does the reshape() function do in NumPy?
easy
A. Creates a new array with random values
B. Changes the shape of an array without changing its data
C. Sorts the elements of an array
D. Deletes elements from an array

Solution

  1. Step 1: Understand the purpose of reshape()

    The reshape() function changes the shape (dimensions) of an existing array but keeps the data intact.
  2. Step 2: Compare with other options

    Options A, B, and C describe different functions or actions unrelated to reshaping.
  3. Final Answer:

    Changes the shape of an array without changing its data -> Option B
  4. Quick Check:

    reshape() = change shape only [OK]
Hint: reshape() changes shape, data stays same [OK]
Common Mistakes:
  • Thinking reshape() changes data values
  • Confusing reshape() with sorting or deleting
  • Assuming reshape() creates new random arrays
2. Which of the following is the correct syntax to reshape a NumPy array arr into 2 rows and 3 columns?
easy
A. arr.reshape(2[3])
B. arr.reshape{2, 3}
C. arr.reshape(2, 3)
D. reshape(arr, 2, 3)

Solution

  1. Step 1: Recall correct reshape syntax

    The correct syntax is array.reshape(dim1, dim2, ...) with dimensions as separate arguments or a tuple.
  2. Step 2: Evaluate options

    arr.reshape(2, 3) uses correct method call with separate arguments. arr.reshape(2[3]) has invalid syntax (missing comma). arr.reshape{2, 3} uses curly braces which is wrong syntax. reshape(arr, 2, 3) uses a function call without object which is invalid.
  3. Final Answer:

    arr.reshape(2, 3) -> Option C
  4. Quick Check:

    Use dot and parentheses with dims [OK]
Hint: Use dot and parentheses with dims, no brackets [OK]
Common Mistakes:
  • Forgetting comma between dimensions
  • Using curly braces instead of parentheses
  • Calling reshape as a standalone function
3. What is the output shape of the following code?
import numpy as np
arr = np.arange(12)
new_arr = arr.reshape(3, 4)
print(new_arr.shape)
medium
A. (3, 4)
B. (4, 3)
C. (12,)
D. (2, 6)

Solution

  1. Step 1: Understand the original array

    np.arange(12) creates a 1D array with 12 elements from 0 to 11.
  2. Step 2: Reshape to (3, 4)

    The reshape changes the array to 3 rows and 4 columns, so the shape becomes (3, 4).
  3. Final Answer:

    (3, 4) -> Option A
  4. Quick Check:

    reshape(3,4) = (3,4) shape [OK]
Hint: reshape dims become shape tuple [OK]
Common Mistakes:
  • Confusing rows and columns order
  • Thinking reshape changes total elements
  • Expecting original 1D shape after reshape
4. What error will occur when running this code?
import numpy as np
arr = np.arange(10)
new_arr = arr.reshape(3, 4)
medium
A. ValueError: cannot reshape array of size 10 into shape (3,4)
B. TypeError: reshape() takes exactly 1 argument
C. SyntaxError: invalid syntax
D. No error, reshaping works fine

Solution

  1. Step 1: Check original array size

    np.arange(10) creates an array with 10 elements.
  2. Step 2: Check reshape dimensions

    Trying to reshape into (3, 4) means 12 elements needed, but only 10 exist.
  3. Step 3: Identify error type

    This mismatch causes a ValueError about incompatible shape.
  4. Final Answer:

    ValueError: cannot reshape array of size 10 into shape (3,4) -> Option A
  5. Quick Check:

    Elements must match for reshape [OK]
Hint: Total elements must match for reshape [OK]
Common Mistakes:
  • Ignoring total element count mismatch
  • Expecting reshape to auto-fill missing elements
  • Confusing ValueError with SyntaxError
5. Given a 1D NumPy array arr = np.arange(24), which of the following reshapes it into a 3D array with shape (2, 3, 4) using automatic dimension calculation with -1 in the first position?
hard
A. arr.reshape(2, 3, 4)
B. arr.reshape(2, -1, 4)
C. arr.reshape(2, 3, -1)
D. arr.reshape(-1, 3, 4)

Solution

  1. Step 1: Understand total elements and target shape

    The array has 24 elements. The target shape is 3D with dimensions (2, 3, 4), total 24 elements.
  2. Step 2: Use -1 for automatic dimension

    Using -1 lets NumPy calculate that dimension automatically. For (2, 3, 4), if we replace one dimension with -1, NumPy calculates it as 24 divided by product of other dims.
  3. Step 3: Check each option

    arr.reshape(2, 3, 4) is explicit (2,3,4) - works but no automatic calculation.
    arr.reshape(2, -1, 4): (2, -1, 4) means -1 = 24/(2*4) = 3, shape (2,3,4) correct.
    arr.reshape(-1, 3, 4): (-1, 3, 4) means -1 = 24/(3*4) = 2, shape (2,3,4) correct.
    arr.reshape(2, 3, -1): (2, 3, -1) means -1 = 24/(2*3) = 4, shape (2,3,4) correct.
    All B, C, D produce correct shape, but question asks for reshaping into (2,3,4) using automatic dimension calculation. Only arr.reshape(-1, 3, 4) uses -1 as first dimension, matching question wording.
  4. Final Answer:

    arr.reshape(-1, 3, 4) -> Option D
  5. Quick Check:

    -1 auto calculates dimension [OK]
Hint: Use -1 for one dimension to auto calculate [OK]
Common Mistakes:
  • Using multiple -1 values in reshape
  • Not matching total elements with new shape
  • Confusing which dimension -1 replaces
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