Bird
Raised Fist0
NumPydata~5 mins

Why reshaping arrays matters in NumPy

Choose your learning style10 modes available
Introduction

Reshaping arrays helps us change the shape of data without changing its content. This is useful to prepare data for analysis or visualization.

When you get data in a flat list but need it in rows and columns to see patterns.
When you want to combine or split data into different groups for comparison.
When a machine learning model expects data in a specific shape.
When you want to convert a multi-dimensional array into a single list for simple calculations.
When you need to match shapes of arrays to perform math operations between them.
Syntax
NumPy
import numpy as np

# Reshape an array
reshaped_array = original_array.reshape(new_shape)

The total number of elements must stay the same before and after reshaping.

Use -1 in new_shape to let numpy calculate the correct size automatically for that dimension.

Examples
Reshape a 1D array of 6 elements into a 2x3 2D array.
NumPy
import numpy as np

# Original array with 6 elements
original_array = np.array([1, 2, 3, 4, 5, 6])

# Reshape to 2 rows and 3 columns
reshaped_array = original_array.reshape(2, 3)
print(reshaped_array)
Use -1 to let numpy figure out the number of columns (here 2 columns).
NumPy
import numpy as np

# Original array with 6 elements
original_array = np.array([1, 2, 3, 4, 5, 6])

# Use -1 to automatically calculate columns
reshaped_array = original_array.reshape(3, -1)
print(reshaped_array)
Reshaping an empty array to have zero rows and 3 columns results in an empty 2D array with shape (0, 3).
NumPy
import numpy as np

# Empty array
empty_array = np.array([])

# Reshape empty array to (0, 3)
reshaped_empty = empty_array.reshape(0, 3)
print(reshaped_empty)
Reshaping a single element array to a 2D array with one row and one column.
NumPy
import numpy as np

# Single element array
single_element_array = np.array([42])

# Reshape to (1, 1)
reshaped_single = single_element_array.reshape(1, 1)
print(reshaped_single)
Sample Program

This program shows how to reshape a 1D array into different 2D shapes. It prints the original array and its shape, then reshapes it to 3 rows and 4 columns, and finally reshapes it to 2 rows with automatic column calculation.

NumPy
import numpy as np

# Create a 1D array with 12 elements
original_array = np.arange(1, 13)
print("Original array:")
print(original_array)
print("Shape:", original_array.shape)

# Reshape to 3 rows and 4 columns
reshaped_array = original_array.reshape(3, 4)
print("\nReshaped array (3x4):")
print(reshaped_array)
print("Shape:", reshaped_array.shape)

# Reshape to 2 rows and let numpy calculate columns
reshaped_auto = original_array.reshape(2, -1)
print("\nReshaped array (2x?):")
print(reshaped_auto)
print("Shape:", reshaped_auto.shape)
OutputSuccess
Important Notes

Reshaping does not change the data, only how it is viewed.

Time complexity is O(1) because no data copying happens, just a new view.

Common mistake: Trying to reshape to a shape with a different total number of elements causes an error.

Use reshaping to prepare data for functions that expect specific input shapes.

Summary

Reshaping changes the shape of data without changing its content.

Use -1 to let numpy calculate one dimension automatically.

Always ensure total elements stay the same before and after reshaping.

Practice

(1/5)
1. Why is reshaping an array important in numpy?
easy
A. It sorts the array elements.
B. It deletes elements to reduce size.
C. It converts arrays into lists.
D. It changes the shape without altering the data content.

Solution

  1. Step 1: Understand reshaping purpose

    Reshaping changes how data is organized in rows and columns but keeps all elements intact.
  2. Step 2: Compare options

    Only It changes the shape without altering the data content. correctly states reshaping changes shape without changing data content.
  3. Final Answer:

    It changes the shape without altering the data content. -> Option D
  4. Quick Check:

    Reshape = Change shape, keep data [OK]
Hint: Reshape changes shape, not data values [OK]
Common Mistakes:
  • Thinking reshaping deletes or adds elements
  • Confusing reshaping with sorting
  • Believing reshaping converts data types
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(3, 2)
C. arr.reshape(2, 3)
D. arr.reshape([2, 3])

Solution

  1. Step 1: Recall numpy reshape syntax

    The reshape method takes dimensions as separate arguments, e.g., reshape(2, 3).
  2. Step 2: Check options

    arr.reshape(2, 3) uses correct syntax with comma-separated integers. arr.reshape(3, 2) would create 3 rows and 2 columns instead. The option using a semicolon (;) is invalid syntax. The option passing a list [2, 3] is incorrect as reshape expects separate arguments.
  3. Final Answer:

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

    reshape(rows, cols) = reshape(2, 3) [OK]
Hint: Use commas, not semicolons or lists in reshape() [OK]
Common Mistakes:
  • Using semicolons instead of commas
  • Passing a list instead of separate arguments
  • Swapping row and column order
3. What is the shape of the array after executing this code?
import numpy as np
arr = np.arange(12)
reshaped = arr.reshape(3, 4)
print(reshaped.shape)
medium
A. (3, 4)
B. (2, 6)
C. (12,)
D. (4, 3)

Solution

  1. Step 1: Understand the code

    arr is created with 12 elements from 0 to 11. Then reshaped into 3 rows and 4 columns.
  2. Step 2: Determine the shape

    The reshape(3, 4) changes shape to (3, 4). Printing shape outputs this tuple.
  3. Final Answer:

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

    reshape(3,4) shape = (3, 4) [OK]
Hint: reshape(3,4) means 3 rows, 4 columns [OK]
Common Mistakes:
  • Confusing rows and columns order
  • Expecting original shape (12,)
  • Mixing up shape tuple format
4. What error will occur when running this code?
import numpy as np
arr = np.arange(10)
reshaped = arr.reshape(3, 4)
medium
A. ValueError: cannot reshape array of size 10 into shape (3,4)
B. TypeError: reshape arguments must be integers
C. SyntaxError: invalid syntax
D. No error, reshaping works fine

Solution

  1. Step 1: Check array size and reshape target

    arr has 10 elements. Reshape tries to make shape (3,4) which needs 12 elements.
  2. Step 2: Identify error type

    Since total elements mismatch, numpy raises ValueError about impossible reshape.
  3. Final Answer:

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

    Mismatch size causes ValueError [OK]
Hint: Total elements must match for reshape [OK]
Common Mistakes:
  • Ignoring total element count mismatch
  • Expecting reshape to truncate or pad data
  • Confusing ValueError with SyntaxError
5. Given a numpy array arr = np.arange(24), which reshape command correctly reshapes it into a 3D array with shape (2, 3, 4) using automatic dimension calculation?
hard
A. arr.reshape(2, 3, 4)
B. arr.reshape(-1, 3, 4)
C. arr.reshape(3, -1, 4)
D. arr.reshape(2, 4, -1)

Solution

  1. Step 1: Understand array size and target shape

    arr has 24 elements. Target shape is (2, 3, 4) which multiplies to 24.
  2. Step 2: Use -1 to let numpy calculate dimension

    Using -1 lets numpy infer that dimension. arr.reshape(-1, 3, 4) uses -1 in first dimension, so shape becomes (2,3,4) automatically.
  3. Step 3: Check other options

    arr.reshape(2, 3, 4) works but does not use automatic calculation. arr.reshape(3, -1, 4) results in (3, 2, 4). arr.reshape(2, 4, -1) results in (2, 4, 3).
  4. Final Answer:

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

    Use -1 for auto dimension: reshape(-1, 3, 4) [OK]
Hint: Use -1 where you want numpy to infer dimension [OK]
Common Mistakes:
  • Placing -1 in wrong dimension causing errors
  • Not matching total elements after reshape
  • Assuming multiple -1s allowed in reshape
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