Slicing and Indexing Arrays in NumPy
Slicing and indexing are powerful tools in NumPy for accessing and manipulating array elements. With these techniques, you can extract subsets of data, reverse arrays, or select elements based on specific criteria.
Indexing in NumPy
Indexing in NumPy allows you to access individual elements of an array. Indexing starts at 0
for the first element and supports both positive and negative indices.
Examples
import numpy as np
# Create a 1D array
array = np.array([10, 20, 30, 40, 50])
# Accessing elements using positive indexing
print(array[0]) # Output: 10
print(array[3]) # Output: 40
# Accessing elements using negative indexing
print(array[-1]) # Output: 50
print(array[-3]) # Output: 30
Indexing in 2D Arrays
In 2D arrays, elements are accessed using [row, column]
indexing.
# Create a 2D array
array_2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# Access element at first row, second column
print(array_2d[0, 1]) # Output: 2
# Access entire row
print(array_2d[1, :]) # Output: [4 5 6]
# Access entire column
print(array_2d[:, 2]) # Output: [3 6 9]
Slicing in NumPy
Slicing is used to extract subsets of data from arrays. It follows the syntax:
start:stop:step
Slicing in 1D Arrays
# Create a 1D array
array = np.array([10, 20, 30, 40, 50])
# Slice elements from index 1 to 3
print(array[1:4]) # Output: [20 30 40]
# Slice with a step value
print(array[::2]) # Output: [10 30 50]
# Reverse the array
print(array[::-1]) # Output: [50 40 30 20 10]
Slicing in 2D Arrays
# Create a 2D array
array_2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# Slice rows 0 and 1, and columns 1 and 2
print(array_2d[:2, 1:3])
# Output:
# [[2 3]
# [5 6]]
# Reverse rows
print(array_2d[::-1, :])
# Output:
# [[7 8 9]
# [4 5 6]
# [1 2 3]]
# Reverse columns
print(array_2d[:, ::-1])
# Output:
# [[3 2 1]
# [6 5 4]
# [9 8 7]]
Advanced Slicing Techniques
Boolean Indexing
Boolean indexing allows you to filter elements based on a condition.
# Create an array
array = np.array([10, 15, 20, 25, 30])
# Select elements greater than 20
print(array[array > 20]) # Output: [25 30]
Fancy Indexing
Fancy indexing uses arrays of indices to access multiple elements.
# Create an array
array = np.array([10, 20, 30, 40, 50])
# Access elements at indices 0, 2, and 4
print(array[[0, 2, 4]]) # Output: [10 30 50]
Try It Yourself
Problem 1: Extract Subsets
Given a 2D array, extract the second row and reverse its elements.
Show Code
import numpy as np
# Create a 2D array
array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# Extract and reverse the second row
result = array[1, ::-1]
print(result) # Output: [6 5 4]
Problem 2: Filter Elements
Given a 1D array, extract all elements that are even.
Show Code
import numpy as np
# Create a 1D array
array = np.array([11, 12, 13, 14, 15, 16])
# Extract even elements
result = array[array % 2 == 0]
print(result) # Output: [12 14 16]