Numpy squeeze() Function



The Numpy squeeze() function is used to remove single-dimensional entries from the shape of an array.

This function is useful for eliminating dimensions with size 1 which can simplify array manipulations. For example if we have an array with shape (1, 3, 1, 5) by applying squeeze() will transform it to shape (3, 5) by removing the singleton dimensions.

This function takes an optional axis parameter to specify which dimensions to remove but if not provided it removes all singleton dimensions.

The result is a new array with fewer dimensions but the same data.

Syntax

The syntax for the Numpy squeeze() function is as follows −

numpy.squeeze(a, axis=None)

Parameters

Following are the parameters of the Numpy squeeze() function −

  • a(array_like): This is the input data which should be an array or array-like object.
  • axis(None or int or tuple of ints, optional): This parameter selects a subset of single-dimensional entries in the shape. If an axis is specified then only that axis or axes will be squeezed. If no axis is specified then all single-dimensional entries will be removed. If a specified axis is not of size 1 then an error will be raised.

Return Value

This function returns the input array but with all or a subset of the dimensions of size 1 removed. This does not modify the original array but returns a new array.

Example 2

Following is the example of using the Numpy squeeze() function. Here in this example the array 'a' with shape (1, 3, 1) is squeezed to remove all single-dimensional entries which results in an array with shape (3,) −

import numpy as np

# Original array with shape (1, 3, 1)
a = np.array([[[1], [2], [3]]])
print("Original array shape:", a.shape)

# Squeezed array
squeezed_a = np.squeeze(a)
print("Squeezed array shape:", squeezed_a.shape)
print("Squeezed array:", squeezed_a)

Output

Original array shape: (1, 3, 1)
Squeezed array shape: (3,)
Squeezed array: [1 2 3]

Example 2

Here in this example we are attempting to squeeze a non-single-dimensional axis i.e. axis 1, results in a ValueError since axis 1 has a size of 3 −

import numpy as np

# Original array with shape (1, 3, 1)
a = np.array([[[1], [2], [3]]])
print("Original array shape:", a.shape)

try:
    # Attempting to squeeze a non-single-dimensional axis
    squeezed_a = np.squeeze(a, axis=1)
except ValueError as e:
    print("Error:", e)

Output

Original array shape: (1, 3, 1)
Error: cannot select an axis to squeeze out which has size not equal to one

Example 3

Below is the example which shows how to use numpy.squeeze() to remove single-dimensional entries from the shape of an array −

import numpy as np

# Creating a 3D array with shape (1, 3, 3)
x = np.arange(9).reshape(1, 3, 3)

print('Array X:')
print(x)
print('\n')

# Removing single-dimensional entries from the shape of x
y = np.squeeze(x)

print('Array Y:')
print(y)
print('\n')

# Printing the shapes of the arrays
print('The shapes of X and Y array:')
print(x.shape, y.shape)

Output

Array X:
[[[0 1 2]
  [3 4 5]
  [6 7 8]]]


Array Y:
[[0 1 2]
 [3 4 5]
 [6 7 8]]


The shapes of X and Y array:
(1, 3, 3) (3, 3)
numpy_array_manipulation.htm
Advertisements