Bird
Raised Fist0
NumPydata~5 mins

reshape() for changing dimensions in NumPy

Choose your learning style10 modes available
Introduction

We use reshape() to change the shape of data without changing its values. It helps us organize data in a way that fits our analysis or model.

You have a flat list of numbers but want to see them as a table with rows and columns.
You want to prepare image data from a 1D array to a 2D or 3D array for processing.
You need to change the shape of data to match the input requirements of a machine learning model.
You want to split a dataset into smaller chunks or combine smaller arrays into a bigger one.
Syntax
NumPy
numpy_array.reshape(new_shape)

new_shape is a tuple that defines the new dimensions, like (rows, columns).

One dimension can be -1, which means numpy will calculate it automatically.

Examples
This changes a 1D array of 6 elements into a 2x3 matrix.
NumPy
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6])
new_arr = arr.reshape((2, 3))
print(new_arr)
Using -1 lets numpy figure out the second dimension automatically.
NumPy
import numpy as np
arr = np.arange(8)
new_arr = arr.reshape((2, -1))
print(new_arr)
This flattens a 2D array into a 1D array.
NumPy
import numpy as np
arr = np.array([[1, 2], [3, 4], [5, 6]])
new_arr = arr.reshape((6,))
print(new_arr)
Sample Program

This program shows how to reshape a 1D array into different 2D shapes. It also demonstrates using -1 to let numpy calculate one dimension automatically.

NumPy
import numpy as np

# Create a 1D array with 12 elements
arr = np.arange(12)
print('Original array:')
print(arr)

# Reshape to 3 rows and 4 columns
reshaped_arr = arr.reshape((3, 4))
print('\nReshaped to 3x4:')
print(reshaped_arr)

# Reshape to 2 rows and let numpy decide columns
reshaped_auto = arr.reshape((2, -1))
print('\nReshaped to 2 rows and automatic columns:')
print(reshaped_auto)
OutputSuccess
Important Notes

The total number of elements must stay the same when reshaping.

If you use a shape that doesn't match the total elements, numpy will give an error.

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

Summary

reshape() changes the shape of an array without changing its data.

You can specify new dimensions as a tuple, using -1 for automatic calculation.

Always keep the total number of elements the same when reshaping.

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