Shape Manipulation

In real-world data analysis, data rarely comes in the exact shape you need.

Before analysis, visualization, or machine learning, data often needs to be reshaped, reorganized, or transformed.

NumPy provides powerful tools to manipulate the shape of arrays without changing the actual data values.

Understanding shape manipulation is essential for :



What Does Shape Mean in NumPy?

In NumPy, the shape of an array refers to the dimensions of the array. It is a tuple of integers that indicates the size of each dimension.

The shape of an array describes :

Example :

import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr.shape)

# Output: (2, 3)

This means :



Reshaping Arrays Using reshape( )

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

Example : 1D to 2D

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6])
reshaped_arr = arr.reshape(2, 3)
print(reshaped_arr)

# Output:
#[[1 2 3]
# [4 5 6]]

Total number of elements must remain the same.


Real-Life Example: Student Marks

import numpy as np
# Student marks in 1D array
marks = np.array([85, 92, 78, 96, 88, 90])
# Reshape to a 2D array (3 students, 2 subjects each)
reshaped_marks = marks.reshape(3, 2)
print(reshaped_marks)

# Output:
#[[85 92]
# [78 96]
# [88 90]]

Now each row can represent a student, and each column a subject.


Using -1 for Automatic Dimension Calculation

NumPy can automatically calculate one dimension if you use -1.

arr = np.array([1, 2, 3, 4, 5, 6])
new_arr = arr.reshape(3, -1)
print(new_arr)

# Output:
#[[1 2]
# [3 4]
# [5 6]]

This is useful when :



Flattening Arrays

Flattening converts a multi-dimensional array into a 1D array.

import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
flattened_arr = arr.flatten()
print(flattened_arr)

# Output: [1 2 3 4 5 6]

Creates a copy of the data.


Using ravel()

The ravel() function is similar to flatten( ), but it returns a view of the original array when possible, which can be more memory-efficient.

import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
raveled_arr = arr.ravel()
print(raveled_arr)

# Output: [1 2 3 4 5 6]

Returns a view whenever possible (more memory efficient).



Difference Between flatten( ) and ravel( )

While both flatten() and ravel() convert a multi-dimensional array into a 1D array, they differ in how they handle memory:

Important when working with large datasets.

import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
flattened = arr.flatten()
raveled = arr.ravel()
print("Flattened:", flattened)
print("Raveled:", raveled)

# Output:
# Flattened: [1 2 3 4 5 6]
# Raveled: [1 2 3 4 5 6]

Transposing Arrays

Transpose swaps rows and columns.

arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr.T)
# Output:
#[[1 4]

Used heavily in :



Adding and Removing Dimensions

Using reshape( ) to Add Dimension

You can use reshape() to add a new dimension to an array.

import numpy as np
arr = np.array([1, 2, 3, 4])
# Add a new axis (dimension)
new_arr = arr.reshape(1, -1)
print(new_arr)

# Output:
#[[1 2 3 4]]

Using np.newaxis

You can also use np.newaxis to add a new axis (dimension) to an array.

new_arr = arr[:, np.newaxis]
print(new_arr)

# Output:
#[[1]

This is common when preparing data for ML models.


Combining Shape Manipulation with Operations

Shape manipulation is often combined with mathematical operations to prepare data for analysis or modeling.

import numpy as np
arr = np.array([[1, 2], [3, 4]])
# Reshape and transpose
reshaped_transposed = arr.reshape(2, 2).T
print(reshaped_transposed)

# Output:
#[[1 3]
# [2 4]]

Shape manipulation allows flexible transformations.



Common Beginner Mistakes

Understanding shape prevents many runtime errors.



Why Shape Manipulation Is Important in Analytics

Shape manipulation helps :

Almost every data pipeline involves reshaping at some stage.



Key Takeaways



Conclusion

Shape manipulation is a fundamental skill in data analytics. Mastering these techniques will make your code more efficient and less error-prone.



Practice Exercises