Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

NumPy - Swapping Axes of Arrays



Swapping Axes of Arrays in NumPy

Swapping axes in NumPy allows you to change the order of dimensions in an array. You can swap axes of an array in NumPy using the swapaxes() function and the transpose() function.

In NumPy, an array can have multiple dimensions, and each dimension is referred as an axis. For example, a 2D array (matrix) has two axes: the rows and the columns. In a 3D array (tensor), there are three axes: depth, height, and width.

  • Axis 0 refers to the first dimension (often rows).
  • Axis 1 refers to the second dimension (often columns).
  • Axis 2 refers to the third dimension, and so on

Using swapaxes() Function

The np.swapaxes() function in NumPy allows you to swap two specified axes of an array. This function is particularly useful when you need to reorganize the structure of an array, such as switching rows and columns in a 2D array or reordering the dimensions in a multi-dimensional array.

This function does not create a copy of the data but rather returns a new view of the array with the specified axes swapped. It does not involve duplicating the array's data in memory.

Following is the syntax of the swapaxes() function −

numpy.swapaxes(arr, axis1, axis2)

Where,

  • arr is the input array.
  • axis1 is the first axis to be swapped.
  • axis2 is the second axis to be swapped.

Example

In the following example, we are swapping the rows and columns in a 2D array using the swapaxes() function in NumPy −

import numpy as np

# Creating a 2D array
arr = np.array([[1, 2, 3],
                [4, 5, 6]])

# Swapping axes 0 and 1 (rows and columns)
swapped = np.swapaxes(arr, 0, 1)

print("Original Array:")
print(arr)

print("\nArray After Swapping Axes:")
print(swapped)

Following is the output obtained −

Original Array:
[[1 2 3]
 [4 5 6]]

Array After Swapping Axes:
[[1 4]
 [2 5]
 [3 6]]

Using the transpose() Function

We can also use the transpose() function to swap axes of arrays in NumPy. Unlike the swapaxes() function, which swaps two specific axes, the transpose() function is used to reorder all axes of an array according to a specified pattern.

Following is the syntax of the transpose() function −

numpy.transpose(a, axes=None)

Where,

  • a is the input array whose axes you want to reorder.
  • axes is a tuple or list specifying the desired order of axes. If axes is None, it reverses the order of the axes.

Example: Matrix Transposition

Matrix transposition is an operation where rows and columns of a 2D array are swapped −

import numpy as np

# Creating a 2D array (matrix)
arr = np.array([[1, 2, 3],
                [4, 5, 6]])

# Transposing the matrix
transposed = np.transpose(arr)

print("Original Array:")
print(arr)

print("\nTransposed Array:")
print(transposed)

This will produce the following result −

Original Array:
[[1 2 3]
 [4 5 6]]

Transposed Array:
[[1 4]
 [2 5]
 [3 6]]

Example: Reordering Axes in a 3D Array

Here, we are using the transpose() function to reorder dimensions in multi-dimensional arrays −

import numpy as np

# Creating a 3D array
arr = np.array([[[1, 2], [3, 4]],
                [[5, 6], [7, 8]]])

# Transposing with custom axis order
transposed = np.transpose(arr, (1, 0, 2))

print("Original Array Shape:", arr.shape)
print("Transposed Array Shape:", transposed.shape)
print("\nTransposed Array:")
print(transposed)

This will produce the following result −

Original Array Shape: (2, 2, 2)
Transposed Array Shape: (2, 2, 2)

Transposed Array:
[[[1 2]
  [5 6]]

 [[3 4]
  [7 8]]]
Advertisements