w3resource

A Comprehensive Guide to Padding Arrays with Numpy.pad


Comprehensive Guide to Numpy.pad: Adding Padding to Arrays

numpy.pad is a versatile function that allows you to add padding to Numpy arrays. Padding is often used in image processing, neural networks, and general array manipulation tasks. With options for constant, edge, symmetric, and other padding styles, it offers extensive customization.


Syntax:

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

Parameters:

    1. array (ndarray): The input array to be padded.

    2. pad_width (int or sequence of int): Specifies the number of values to pad along each axis.

    • Example: pad_width=2 adds two elements on all sides.

    3. mode (str): Padding type. Options include:

    • 'constant': Pads with a constant value (default is 0).
    • 'edge': Pads with edge values.
    • 'symmetric': Pads symmetrically.
    • 'reflect': Reflects array values.
    • More options include 'wrap', 'linear_ramp', etc.

    4. kwargs: Additional arguments like constant_values for 'constant' mode.


Examples:

Example 1: Constant Padding

Code:

import numpy as np

# Define an array
array = np.array([[1, 2], [3, 4]])

# Add padding of 1 with a constant value of 0
padded_array = np.pad(array, pad_width=1, mode='constant', constant_values=0)

# Print the padded array
print("Padded array with constant value:\n", padded_array)

Output:

Padded array with constant value:
 [[0 0 0 0]
 [0 1 2 0]
 [0 3 4 0]
 [0 0 0 0]]

Explanation:

  • Pads the array with a border of zeros.
  • The pad_width=1 adds one row/column of padding on all sides.

Example 2: Edge Padding

Code:

import numpy as np

# Define an array
array = np.array([[1, 2], [3, 4]])

# Pad using edge values
padded_array = np.pad(array, pad_width=2, mode='edge')

# Print the padded array
print("Padded array with edge values:\n", padded_array)

Output:

Padded array with edge values:
 [[1 1 1 2 2 2]
 [1 1 1 2 2 2]
 [1 1 1 2 2 2]
 [3 3 3 4 4 4]
 [3 3 3 4 4 4]
 [3 3 3 4 4 4]]

Explanation:

  • The padding replicates the edge values of the array.

Example 3: Symmetric Padding

Code:

import numpy as np

# Define an array
array = np.array([[1, 2], [3, 4]])

# Pad symmetrically
padded_array = np.pad(array, pad_width=1, mode='symmetric')

# Print the padded array
print("Padded array with symmetric values:\n", padded_array)

Output:

Padded array with symmetric values:
 [[1 1 2 2]
 [1 1 2 2]
 [3 3 4 4]
 [3 3 4 4]]

Explanation:

  • The array is padded symmetrically by mirroring its values.


Example 4: Reflect Padding

Code:

import numpy as np

# Define an array
array = np.array([[1, 2], [3, 4]])

# Pad using reflection
padded_array = np.pad(array, pad_width=1, mode='reflect')

# Print the padded array
print("Padded array with reflection:\n", padded_array)

Output:

Padded array with reflection:
 [[4 3 4 3]
 [2 1 2 1]
 [4 3 4 3]
 [2 1 2 1]]

Explanation:

  • Reflects the array values around its edges for padding

Example 5: Using Custom Padding Widths

Code:

import numpy as np

# Define an array
array = np.array([[1, 2], [3, 4]])

# Pad with custom widths for rows and columns
padded_array = np.pad(array, pad_width=((2, 1), (3, 2)), mode='constant', constant_values=5)

# Print the padded array
print("Padded array with custom widths:\n", padded_array)

Output:

Padded array with custom widths:
 [[5 5 5 5 5 5 5]
 [5 5 5 5 5 5 5]
 [5 5 5 1 2 5 5]
 [5 5 5 3 4 5 5]
 [5 5 5 5 5 5 5]]

Explanation:

  • pad_width=((2, 1), (3, 2)) specifies padding:
    • 2 rows at the top, 1 at the bottom.
    • 3 columns on the left, 2 on the right.

Example 6: Padding a 1D Array

Code:

import numpy as np

# Define a 1D array
array = np.array([1, 2, 3, 4])

# Pad with constant values
padded_array = np.pad(array, pad_width=2, mode='constant', constant_values=-1)

# Print the padded array
print("Padded 1D array:\n", padded_array)

Output:

Padded 1D array:
 [-1 -1  1  2  3  4 -1 -1]

Explanation:

  • Adds padding of 2 elements on each side of a 1D array

Padding Modes:

Mode Description
'constant' Pads with a constant value.
'edge' Pads with the edge value of the array.
'symmetric' Pads by mirroring the array symmetrically.
'reflect' Pads by reflecting the array values.
'wrap' Wraps around the array for padding.
'linear_ramp' Pads with a linear ramp pattern.

Additional Notes:

    1. Performance: Ensure that padding is done only when necessary, as it increases array size.

    2. Applications: Commonly used in image processing, where padding is required to apply filters.

Practical Guides to NumPy Snippets and Examples.



Follow us on Facebook and Twitter for latest update.