Python’s NumPy package makes slicing multi-dimensional arrays a valuable tool for data manipulation and analysis. It enables efficient subset data extraction and manipulation from arrays, making it a useful skill for any programmer, engineer, or data scientist.
Python Slicing Multi-Dimensional Arrays
Slicing is a method for taking out an array section frequently used for subsetting and modifying data inside arrays. In Python, Slicing gains considerably more strength when used with multi-dimensional arrays because it may be applied along several axes.
1-D Array Slicing
In a 1-D NumPy array, slicing is performed using the [start:stop: step] notation.
Python3
import numpy as np matrix = np.array([[ 1 , 2 , 3 ], [ 4 , 5 , 6 ], [ 7 , 8 , 9 ]]) # Slicing a subarray # Get a 2x2 subarray sub_matrix = matrix[ 0 : 2 , 1 : 3 ] print (sub_matrix) |
Output:
[1 2 3]
Multi-Dimensional Array Slicing
Now, let’s move on to slicing multi-dimensional arrays. Python NumPy allows you to slice arrays along each axis independently. This means you can extract rows, columns, or specific elements from a multi-dimensional array with ease.
Python Slicing Rows and Columns
In this example, we are slicing rows and columns.
Python3
import numpy as np matrix = np.array([[ 1 , 2 , 3 , 4 ], [ 5 , 6 , 7 , 8 ], [ 9 , 10 , 11 , 12 ]]) # Slicing with step # Skip every other row and column sliced_matrix = matrix[:: 2 , :: 2 ] print (sliced_matrix) |
Output
[1, 2, 3]
[2 5 8]
Python Slicing Subarrays
In this example, we are slicing subarrays from a multi-dimensional array. This is useful when we want to extract a smaller portion of the array for further analysis or manipulation.
Python3
# Create a sample 2-D array (a list of lists) matrix = [ [ 1 , 2 , 3 ], [ 4 , 5 , 6 ], [ 7 , 8 , 9 ] ] # Slicing using negative indexing to get the last row last_row = matrix[ - 1 ] print ( "Last Row:" , last_row) # Slicing using negative indexing to get the last element of the first row last_element_first_row = matrix[ 0 ][ - 1 ] print ( "Last Element of First Row:" , last_element_first_row) # Slicing using negative indexing to get the last two elements of the second row last_two_elements_second_row = matrix[ 1 ][ - 2 :] print ( "Last Two Elements of Second Row:" , last_two_elements_second_row) |
Output
[[2 3]
[5 6]]
Slicing with Step in Python
In this example, we are using the step parameter in multi-dimensional array slicing to skip elements along each axis.
Python3
import numpy as np matrix = np.array([[ 1 , 2 , 3 ], [ 4 , 5 , 6 ], [ 7 , 8 , 9 ]]) # Combining slicing along rows and columns sub_matrix = matrix[ 1 : 3 , 0 : 2 ] print (sub_matrix) |
Output
[[ 1 3 ]
[ 9 11 ]]
Slicing using Negative Indexing in 2-D array
In this example, we are using negative indexing to slice in a 2-D array.
Python3
import numpy as np # Create a 3-D NumPy array array_3d = np.array([ [[ 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 ]] ]) # Display the original array print ( "Original 3-D Array:" ) print (array_3d) # Slice the last row from each 2-D matrix sliced_array = array_3d[:, :, - 1 ] # Display the sliced array print ( "\nSliced 3-D Array (Last Row from Each 2-D Matrix):" ) print (sliced_array) |
Output
Last Row: [7, 8, 9]
Last Element of First Row: 3
Last Two Elements of Second Row: [5, 6]
Slicing along Multiple Axes in Python
In this example, we are slicing along multiple axes to extract specific elements from multi-dimensional arrays.
Python3
Output
[[4 5]
[7 8]]
Slicing using Negative Indexing in 3-D array
In this example, we first create a 3-D NumPy array called array_3d. Then, we use negative indexing to slice the last row from each 2-D matrix within the 3-D array. The slicing notation [:, :, -1] means that we’re selecting all elements along the first and second dimensions (rows and columns) and the last element along the third dimension (last row in each 2-D matrix).
Python3
import numpy as np # Create a 3-D NumPy array array_3d = np.array([ [[ 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 ]] ]) # Display the original array print ( "Original 3-D Array:" ) print (array_3d) # Slice the last row from each 2-D matrix sliced_array = array_3d[:, :, - 1 ] # Display the sliced array print ( "\nSliced 3-D Array (Last Row from Each 2-D Matrix):" ) print (sliced_array) |
Output
Original 3-D Array:
[[[ 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]]]
Sliced 3-D Array (Last Row from Each 2-D Matrix):
[[ 3 6 9]
[12 15 18]
[21 24 27]]