Numpy Tutorial
Creating NumPy Array
NumPy Array Manipulation
Matrix in NumPy
Operations on NumPy Array
Reshaping NumPy Array
Indexing NumPy Array
Arithmetic operations on NumPy Array
Linear Algebra in NumPy Array
NumPy and Random Data
Sorting and Searching in NumPy Array
Universal Functions
Working With Images
Projects and Applications with NumPy
Slicing and indexing in NumPy allows for accessing and modifying data in arrays with great flexibility. This tutorial covers both basic slicing and advanced indexing in NumPy.
Ensure you have NumPy installed:
pip install numpy
Then, import the necessary library:
import numpy as np
Similar to Python lists, NumPy arrays can be sliced.
1D Arrays:
arr = np.array([0, 1, 2, 3, 4, 5]) print(arr[1:5]) # Outputs: [1 2 3 4]
2D Arrays (matrices):
matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) print(matrix[0:2, 1:3]) # Outputs: # [[2 3] # [5 6]]
Advanced indexing returns a copy of the data (unlike slicing that returns a view).
Integer Arrays:
Use arrays of integers as indices:
arr = np.array([0, 1, 2, 3, 4]) print(arr[[1, 3, 4]]) # Outputs: [1 3 4]
Boolean Arrays:
This is commonly used for conditional selection:
arr = np.array([1, 2, 3, 4, 5]) print(arr[arr > 3]) # Outputs: [4 5]
You can combine both in various ways:
matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) print(matrix[1:, [0, 2]]) # Outputs: # [[4 6] # [7 9]]
Advanced indexing can also be used to modify values:
arr = np.array([0, 1, 2, 3, 4]) arr[[1, 3]] = -1 print(arr) # Outputs: [ 0 -1 2 -1 4]
It's important to understand how broadcasting works, or you may get unexpected results:
arr = np.array([0, 1, 2, 3, 4]) arr[[0, 0, 2]] = [99, 100, 101] print(arr) # Outputs: [100 1 101 3 4]
Here, arr[0]
gets the value 100 because it's the last assignment for index 0.
Understanding the nuances between basic slicing (which returns views) and advanced indexing (which returns copies) is crucial for data manipulation in NumPy. These tools are powerful and form the foundation of many operations in data science and machine learning tasks. Practice regularly to build intuition and proficiency!
Description: Array slicing in NumPy involves extracting a portion of an array. It is a powerful feature for working with large datasets efficiently.
Code:
import numpy as np # Create a NumPy array arr = np.array([1, 2, 3, 4, 5]) # Slice the array from index 1 to 3 (exclusive) sliced_arr = arr[1:3] print("Original Array:", arr) print("Sliced Array:", sliced_arr)
Description: Demonstrating basic slicing and indexing examples using NumPy arrays.
Code:
import numpy as np # Create a NumPy array arr = np.array([1, 2, 3, 4, 5]) # Indexing and slicing first_element = arr[0] subset = arr[1:4] last_element = arr[-1] print("Original Array:", arr) print("First Element:", first_element) print("Subset:", subset) print("Last Element:", last_element)
Description: Advanced indexing allows you to extract elements based on specific conditions or using integer arrays.
Code:
import numpy as np # Create a NumPy array arr = np.array([1, 2, 3, 4, 5]) # Advanced indexing using boolean condition condition = arr > 2 result = arr[condition] print("Original Array:", arr) print("Advanced Indexing Result:", result)
Description: Exploring advanced slicing techniques, such as using step values and multidimensional slicing.
Code:
import numpy as np # Create a NumPy array arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9]) # Advanced slicing with step value subset_step = arr[1:8:2] print("Original Array:", arr) print("Advanced Slicing with Step:", subset_step)
Description: Applying slicing and indexing to multidimensional arrays, addressing rows, columns, and specific elements.
Code:
import numpy as np # Create a 2D NumPy array arr_2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # Slicing rows and columns first_row = arr_2d[0, :] second_column = arr_2d[:, 1] subset = arr_2d[1:3, 0:2] print("Original 2D Array:") print(arr_2d) print("First Row:", first_row) print("Second Column:", second_column) print("Subset:") print(subset)
Description: Using boolean masks for indexing, allowing you to filter and extract elements based on conditions.
Code:
import numpy as np # Create a NumPy array arr = np.array([1, 2, 3, 4, 5]) # Boolean mask for indexing mask = np.array([True, False, True, False, True]) result = arr[mask] print("Original Array:", arr) print("Boolean Mask Result:", result)
Description: The ellipsis (...) in NumPy is a convenient way to represent multiple colons for multidimensional array slicing.
Code:
import numpy as np # Create a 3D NumPy array arr_3d = np.random.rand(2, 3, 4) # Using ellipsis for advanced slicing subset = arr_3d[..., 1] print("Original 3D Array:") print(arr_3d) print("Subset using Ellipsis:") print(subset)