How to add dimension to Numpy array?

Let’s check how to add a dimension to a Numpy array. Expanding dimensions in a NumPy array can be a valuable operation when working with multidimensional data. We will use the newaxis and expand_dims functions.
Numpy ways to expand arrays Python

In this Python tutorial, I’ll show a few ways to expand the Numpy array by adding another dimension.

Let’s start with the easiest way.

Adding dimension with the newaxis method

import numpy as np

my_array = np.arange(6).reshape(3, 2)
print(f"My array shape is: \n {my_array.shape}")

my_expanded_array = my_array[:, np.newaxis, :, np.newaxis]
print(f"My expanded array shape is: \n {my_expanded_array.shape}")

I am using the newaxis function and adding it as a parameter exactly where I can add a new axis.

My array shape is: 
 (3, 2)
My expanded array shape is: 
 (3, 1, 2, 1)

This is how to add dimensions at the beginning of the Numpy array.

import numpy as np

my_array = np.arange(6).reshape(3, 2)
print(f"My array shape is: \n {my_array.shape}")

my_expanded_array = my_array[:, np.newaxis, :, np.newaxis]
print(f"My expanded array shape is: \n {my_expanded_array.shape}")

my_another_array = my_array[:, :, np.newaxis, np.newaxis]
print(f"My another expanded array shape is: \n {my_another_array.shape}")

Thanks to my_array[:, :, np.newaxis, np.newaxis] it is placed at the beginning of the array.

My array shape is: 
 (3, 2)
My expanded array shape is: 
 (3, 1, 2, 1)
My another expanded array shape is: 
 (3, 2, 1, 1)

Adding dimension with the expand_dims method

There is also the expand_dims Numpy function when newaxis is not enough for you.

See also  How to permute in Numpy?

The easiest example is to tell Numpy where to add a dimension to an array as a parameter.

import numpy as np

my_array = np.arange(6).reshape(3, 2)
print(f"My array shape is: \n {my_array.shape}")

my_expand_dims_array = np.expand_dims(my_array, axis=2)
print(f"My expand dims array shape is: \n {my_expand_dims_array.shape}")

I wrote np.expand_dims(my_array, axis=2) to add the axis as a third dimension.

My array shape is: 
 (3, 2)
My expand dims array shape is: 
 (3, 2, 1)

There is also the possibility to add multiple axes with expand_dims. To add multiple dimensions to a Numpy array, just use tuple values as the expand_dims parameter.

import numpy as np

my_array = np.arange(6).reshape(3, 2)
print(f"My array shape is: \n {my_array.shape}")

my_expand_dims_array = np.expand_dims(my_array, axis=2)
print(f"My expand dims array shape is: \n {my_expand_dims_array.shape}")

my_expand_dims_array = np.expand_dims(my_array, axis=(0, 1, 4))
print(f"My expand dims array shape is: \n {my_expand_dims_array.shape}")

I used np.expand_dims (my_array, axis= (0, 1, 4) to add the first, second, and fifth axes.

My array shape is: 
 (3, 2)
My expand dims array shape is: 
 (3, 2, 1)
My expand dims array shape is: 
 (1, 1, 3, 2, 1)

For sure, you know now how to add dimensions to Numpy arrays.

See also  Understanding and Fixing numpy.AxisError: A Comprehensive Guide