NumPy: Get all 2D diagonals of a 3D numpy array
Extract all 2D diagonals of a 3D array.
Write a NumPy program to get all 2D diagonals of a 3D numpy array.
Sample Solution:
Python Code:
# Importing necessary libraries
import numpy as np
# Creating a 3D NumPy array with dimensions 3x4x5 using arange and reshape methods
np_array = np.arange(3 * 4 * 5).reshape(3, 4, 5)
# Printing the original 3D NumPy array and its type
print("Original NumPy array:")
print(np_array)
print("Type: ", type(np_array))
# Extracting 2D diagonals from the 3D array with the specified axes using np.diagonal
result = np.diagonal(np_array, axis1=1, axis2=2)
# Printing the 2D diagonals and their type
print("\n2D diagonals: ")
print(result)
print("Type: ", type(result))
Sample Output:
Original Numpy array: [[[ 0 1 2 3 4] [ 5 6 7 8 9] [10 11 12 13 14] [15 16 17 18 19]] [[20 21 22 23 24] [25 26 27 28 29] [30 31 32 33 34] [35 36 37 38 39]] [[40 41 42 43 44] [45 46 47 48 49] [50 51 52 53 54] [55 56 57 58 59]]] Type: <class 'numpy.ndarray'> 2D diagonals: [[ 0 6 12 18] [20 26 32 38] [40 46 52 58]] Type: <class 'numpy.ndarray'>
Explanation:
np_array = np.arange(3*4*5).reshape(3,4,5)
In the above code -
- np.arange(3*4*5) generates a 1D array of integers from 0 to (345)-1, which is from 0 to 59.
- reshape(3, 4, 5) reshapes the 1D array into a 3D array with dimensions 3x4x5.
- rp_array stores the created 3D array.
result = np.diagonal(np_array, axis1=1, axis2=2): This code computes the diagonal elements of the 3D array along the specified axes (axis1 and axis2). In this case, the diagonals are taken along the 2nd (axis1=1) and 3rd (axis2=2) dimensions of the array. For each element along the first dimension, the function picks the diagonal elements from the 4x5 sub-arrays. ‘result’ variable stores the computed diagonal elements.
Pictorial Presentation:
Python-Numpy Code Editor:
What is the difficulty level of this exercise?
Test your Programming skills with w3resource's quiz.
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics