Fancy indexing lets you pick specific items from data using lists of positions. It helps you get or change many values at once easily.
Fancy indexing with integer arrays in NumPy
import numpy as np # Create an array array = np.array([10, 20, 30, 40, 50]) # Use a list or array of integers to pick elements indexes = [1, 3, 4] selected_elements = array[indexes]
The indexes can be a Python list or a NumPy array of integers.
Fancy indexing returns a new array with the selected elements.
import numpy as np array = np.array([5, 10, 15, 20, 25]) indexes = [0, 2, 4] print(array[indexes])
import numpy as np array = np.array([5, 10, 15, 20, 25]) indexes = [] print(array[indexes])
import numpy as np array = np.array([5]) indexes = [0] print(array[indexes])
import numpy as np array = np.array([5, 10, 15, 20, 25]) indexes = [4, 0] print(array[indexes])
This program shows how to pick elements from an array using a list of indexes, then change those elements in the original array.
import numpy as np # Create an array of numbers numbers = np.array([100, 200, 300, 400, 500]) print("Original array:", numbers) # Choose indexes to select selected_indexes = [1, 3, 4] # Use fancy indexing to get elements at these positions selected_numbers = numbers[selected_indexes] print("Selected elements at positions 1, 3, 4:", selected_numbers) # Change elements at these positions numbers[selected_indexes] = [210, 410, 510] print("Array after updating selected positions:", numbers)
Time complexity is O(k) where k is the number of indexes selected.
Space complexity is O(k) for the new array created by fancy indexing.
A common mistake is using indexes out of range, which causes an error.
Use fancy indexing when you want to select or update multiple specific elements at once. For continuous slices, normal slicing is simpler and faster.
Fancy indexing lets you pick or change many elements by giving their positions in a list.
It works with lists or arrays of integers as indexes.
It creates a new array of selected elements or updates the original array if assigned.
Practice
Solution
Step 1: Understand fancy indexing
Fancy indexing uses a list or array of integers to pick elements by their positions.Step 2: Identify the correct operation
It selects multiple elements from the original array based on given indices.Final Answer:
Select multiple elements from an array using a list of positions -> Option CQuick Check:
Fancy indexing = select elements by positions [OK]
- Confusing fancy indexing with sorting
- Thinking it changes data type
- Assuming it creates arrays of zeros
arr using fancy indexing?Solution
Step 1: Recall fancy indexing syntax
Fancy indexing uses double square brackets with a list or array of indices inside.Step 2: Match syntax to options
Onlyarr[[0, 2, 4]]uses correct double brackets and list format.Final Answer:
arr[[0, 2, 4]] -> Option DQuick Check:
Double brackets with list = correct fancy indexing [OK]
- Using parentheses instead of brackets
- Using curly braces which are invalid
- Using slicing syntax incorrectly
import numpy as np arr = np.array([10, 20, 30, 40, 50]) indices = np.array([1, 3, 4]) result = arr[indices] print(result)
Solution
Step 1: Understand the array and indices
Original array is [10, 20, 30, 40, 50]. Indices are [1, 3, 4].Step 2: Select elements at given indices
Elements at positions 1, 3, 4 are 20, 40, 50 respectively.Final Answer:
[20 40 50] -> Option AQuick Check:
arr[1,3,4] = [20 40 50] [OK]
- Mixing up indices and values
- Using wrong positions from array
- Confusing slicing with fancy indexing
import numpy as np arr = np.array([5, 10, 15, 20]) indices = [1, 4] print(arr[indices])
Solution
Step 1: Check array size and indices
Array length is 4, valid indices are 0 to 3. Index 4 is invalid.Step 2: Understand error type
Accessing index 4 causes IndexError: index out of bounds.Final Answer:
IndexError because index 4 is out of bounds -> Option AQuick Check:
Index 4 invalid for length 4 array [OK]
- Assuming list indices are always valid
- Confusing syntax errors with index errors
- Thinking list indices cause type errors
arr = np.array([[1,2,3],[4,5,6],[7,8,9]]), how can you use fancy indexing to select elements at positions (0,2), (1,0), and (2,1) and create a new 1D array with these values?Solution
Step 1: Understand 2D fancy indexing
To select elements at (row, col) positions, use two index arrays: one for rows, one for columns.Step 2: Match given positions to index arrays
Positions are (0,2), (1,0), (2,1), so rows = [0,1,2], cols = [2,0,1].Step 3: Use fancy indexing syntax
Use arr[[0,1,2], [2,0,1]] to get elements [3,4,8].Final Answer:
arr[[0,1,2], [2,0,1]] -> Option BQuick Check:
Rows and cols arrays match positions [OK]
- Mixing row and column indices order
- Using chained indexing instead of fancy indexing
- Using wrong index arrays for positions
Ready to prove it?
Pass the test and this pattern moves unknown
