numpy.reshape() is used to change the shape of a NumPy array without changing its data. It helps convert arrays between different dimensions, such as transforming a 1D array into a 2D or 3D array.
Example: The following example reshapes a 1D array containing 6 elements into a 2D array with 2 rows and 3 columns.
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6])
res = np.reshape(arr, (2, 3))
print(res)
Output
[[1 2 3] [4 5 6]]
Explanation: np.reshape(arr, (2, 3)) changes the shape of the array from 1 dimension to a 2 × 3 matrix while keeping all elements in the same order.
Syntax
numpy.reshape(array, shape, order='C')
Parameters:
- array: Input array to reshape.
- shape: New shape of the array. It can be an integer or a tuple of integers.
- order (optional): C - Row-major order (default), F - Column-major order, A - Uses Fortran order if possible, otherwise C order and K - Preserves the original memory order as closely as possible.
Return Type: Returns a new array with the specified shape.
Examples
Example 1: In this example, a 1D array is converted into a 2D array with a fixed number of rows and columns. The total number of elements remains the same after reshaping.
import numpy as np
a = np.arange(1, 9)
r = np.reshape(a, (4, 2))
print(r)
Output
[[1 2] [3 4] [5 6] [7 8]]
Explanation: np.reshape(a, (4, 2)) rearranges the 8 elements into a matrix with 4 rows and 2 columns.
Example 2: Sometimes the exact size of one dimension is not known in advance. In such cases, -1 can be used and NumPy automatically calculates the missing dimension.
import numpy as np
a = np.arange(12)
r = np.reshape(a, (3, -1))
print(r)
Output
[[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]]
Explanation: In np.reshape(a, (3, -1)), NumPy automatically determines the number of columns as 4 because the array contains 12 elements.
Example 3: By default, NumPy fills elements row by row while reshaping. This example shows how to reshape an array by filling elements column by column using the order='F' parameter.
import numpy as np
a = np.array([1, 2, 3, 4, 5, 6])
r = np.reshape(a, (2, 3), order='F')
print(r)
Output
[[1 3 5] [2 4 6]]
Explanation: order='F' reshapes the array using column-major order, so elements are filled column-wise instead of the default row-wise arrangement.
