NumPy Padding

Vaibhhav Khetarpal Jan 30, 2023
  1. Use the NumPy.pad() Function to Pad a NumPy Array in Python
  2. Use the shape() Function to Pad a NumPy Array in Python
NumPy Padding

Python does not allow the direct use of arrays. This is where the NumPy library comes in, making it possible to deal with and manipulate arrays in Python.

Arrays can be of any specified size and dimensions. Sometimes, there is a need to compensate for the dimensions of any particular array, and this is where padding comes in handy.

Padding, in simple terms, refers to adding uninformative values, usually zeros, to any rows or columns when talking about arrays. It is vastly utilized for compensating for the sheer number of rows or columns in a lacking array or a matrix.

This tutorial demonstrates how to pad a NumPy array in Python. For example, we will pad the given NumPy array with zeros in this tutorial.

Use the NumPy.pad() Function to Pad a NumPy Array in Python

As the name suggests, the NumPy.pad() function is utilized to perform the padding operation on NumPy arrays.

The syntax of the NumPy.pad() function is as follows.

numpy.pad(array, pad_width, mode="constant", **kwargs)

All the parameters of the NumPy.pad() function have been defined below for ease of understanding of the reader.

  1. array - The parameter specifies the array that must be padded.

  2. pad_width - It specifies the number of values that would be added to the edges of all the axes. Tuples are used to specify the width of the multidimensional arrays.

  3. mode - An optional parameter specifies the array’s mode.

  4. **kwargs - Can pass variable keyword length of argument inside a function. It is optional to mention, and you can read more about it online.

    The examples in this article do not feature the use of this argument.

Here, we will take an example of a multidimensional array, but the same can be done for a one-dimensional array by tweaking the code a little bit.

The following code uses the NumPy.pad() function to pad a NumPy array in Python.

import numpy as np

x = np.array([[1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0]])
y = np.pad(x, [(0, 1), (0, 1)], mode="constant")
print(y)

The above code provides the following output.

[[1. 1. 1. 1. 0.]
 [1. 1. 1. 1. 0.]
 [1. 1. 1. 1. 0.]
 [0. 0. 0. 0. 0.]]

Here, we perform the padding operation on a multidimensional array to extend its dimensions to our specified size.

Use the shape() Function to Pad a NumPy Array in Python

This is an indirect method that is also capable of achieving the same results as the NumPy.pad() function. The shape() function is another one of the functions contained within the NumPy library and can be accessed after importing this library to the code.

The shape function is utilized to determine the dimensions of a given array or a matrix.

This method is a bit stretched, as it creates a fresh null matrix of the desired dimensions per the user’s needs and then inserts the original matrix into the newly created null matrix. It achieves the same results but takes a different and indirect path in the journey to get to the result.

Apart from the shape() function, this approach uses the NumPy.zeros() method to create a null matrix.

For this approach, we need a reference matrix whose dimensions satisfy the need of the user’s target dimensions post padding, as we take the reference of the final dimensions needed to create the null matrix first.

The following code uses the shape() function to pad a NumPy array in Python.

import numpy as np

x = np.array([[1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0]])
y = np.array(
    [
        [1.0, 1.0, 1.0, 1.0, 1.0],
        [1.0, 1.0, 1.0, 1.0, 1.0],
        [1.0, 1.0, 1.0, 1.0, 1.0],
        [1.0, 1.0, 1.0, 1.0, 1.0],
    ]
)
z = np.zeros(np.shape(y))
z[: x.shape[0], : x.shape[1]] = x
print(z)

The above code provides the following output.

[[1. 1. 1. 1. 0.]
 [1. 1. 1. 1. 0.]
 [1. 1. 1. 1. 0.]
 [0. 0. 0. 0. 0.]]
Vaibhhav Khetarpal avatar Vaibhhav Khetarpal avatar

Vaibhhav is an IT professional who has a strong-hold in Python programming and various projects under his belt. He has an eagerness to discover new things and is a quick learner.

LinkedIn