Open In App

Python slicing multi-dimensional arrays

Last Updated : 29 Sep, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

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]]



Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads