# NumPy reshape: A Step-by-Step Guide with Examples

NumPy, short for Numerical Python, is a powerful library in Python that facilitates mathematical and logical operations on arrays. One of the key functionalities it offers is the ability to reshape arrays, allowing users to transform their data structures seamlessly. In this blog, we'll delve into the intricacies of NumPy reshape with step-by-step examples to help you master this essential skill.

## Understanding NumPy Reshape:

NumPy reshape is a method that changes the shape of an array without altering its data. This can be immensely useful in various scenarios, such as preparing data for machine learning models or adjusting array dimensions to perform specific operations.

## Basic Reshaping:

``````
import numpy as np

original_array = np.array([11, 42, 73, 84, 25, 16])
reshaped_array = original_array.reshape((2, 3))

print("Original Array:")
print(original_array)
print("\nReshaped Array:")
print(reshaped_array)
``````

In this example, we reshape a 1D array with six elements into a 2D array with two rows and three columns. Understanding the shape parameter is crucial, as it dictates the new dimensions of the array.

``````
Original Array:
[11 42 73 84 25 16]

Reshaped Array:
[[11 42 73]
[84 25 16]]
``````

## Reshaping Multi-Dimensional Arrays:

Now, let's explore reshaping multi-dimensional arrays. Consider a 2D array:

``````
import numpy as np

original_2d_array = np.array([[11, 28, 13], [24, 53, 61]])
reshaped_2d_array = original_2d_array.reshape((3, 2))

print("Original 2D Array:")
print(original_2d_array)
print("\nReshaped 2D Array:")
print(reshaped_2d_array)
``````

In this case, we transform a 2x3 array into a 3x2 array. Pay attention to how the total number of elements in the array remains the same after reshaping.

``````
Original 2D Array:
[[11 28 13]
[24 53 61]]

Reshaped 2D Array:
[[11 28]
[13 24]
[53 61]]
``````

## Reshaping with -1 Parameter:

NumPy allows us to use the -1 parameter, which infers the size of one of the dimensions based on the size of the array and the specified dimension. Consider the following example:

``````
import numpy as np

original_array = np.array([110, 12, 33, 44, 45, 46])
reshaped_array = original_array.reshape((2, -1))

print("Original Array:")
print(original_array)
print("\nReshaped Array:")
print(reshaped_array)
``````

Here, NumPy automatically infers the size of the second dimension, resulting in a 2x3 array.

``````
Original Array:
[110  12  33  44  45  46]

Reshaped Array:
[[110  12  33]
[ 44  45  46]]
``````

## Reshape and Transpose:

Reshaping and transposing can be combined to achieve specific arrangements of data. Let's transpose a 2D array and then reshape it:

``````
import numpy as np

original_2d_array = np.array([[14, 42, 43], [44, 45, 46]])
transposed_array = original_2d_array.T
reshaped_array = transposed_array.reshape((3, 2))

print("Original 2D Array:")
print(original_2d_array)
print("\nTransposed Array:")
print(transposed_array)
print("\nReshaped Array:")
print(reshaped_array)
``````

In this example, we first transpose the 2D array and then reshape it into a 3x2 array.

``````
Original 2D Array:
[[14 42 43]
[44 45 46]]

Transposed Array:
[[14 44]
[42 45]
[43 46]]

Reshaped Array:
[[14 44]
[42 45]
[43 46]]
``````

## Conclusion:

NumPy reshape is a versatile tool that empowers data scientists and developers to manipulate arrays efficiently. Whether you're preparing data for machine learning algorithms or simply adjusting array dimensions for specific operations, a solid understanding of NumPy reshape is essential. Through these step-by-step examples, you're now equipped to confidently reshape arrays to suit your needs.