Bird
Raised Fist0
NumPydata~20 mins

Fancy indexing with integer arrays in NumPy - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Fancy Indexing Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of fancy indexing with repeated indices
What is the output of the following code snippet using NumPy fancy indexing?
NumPy
import numpy as np
arr = np.array([10, 20, 30, 40, 50])
result = arr[[1, 2, 2, 4]]
print(result)
A[10 20 30 40]
B[20 30 30 50]
C[1 2 2 4]
D[20 30 40 50]
Attempts:
2 left
💡 Hint
Remember that fancy indexing returns elements at the specified indices, including duplicates.
❓ data_output
intermediate
2:00remaining
Shape of result after 2D fancy indexing
Given the code below, what is the shape of the resulting array?
NumPy
import numpy as np
arr = np.arange(16).reshape(4,4)
indices = np.array([[0, 1], [2, 3]])
result = arr[indices]
print(result.shape)
A(2, 2, 4)
B(4, 4)
C(2, 4)
D(2, 2)
Attempts:
2 left
💡 Hint
Fancy indexing with a 2D array returns an array with shape equal to the indices shape plus the remaining dimensions.
🔧 Debug
advanced
2:00remaining
Identify the error in fancy indexing with mixed types
What error will the following code raise?
NumPy
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
indices = [1, '2', 3]
result = arr[indices]
print(result)
AValueError: invalid literal for int() with base 10: '2'
BIndexError: index 2 is out of bounds for axis 0 with size 5
CTypeError: only integer scalar arrays can be converted to a scalar index
DNo error, output: [2 3 4]
Attempts:
2 left
💡 Hint
Check the types inside the indices list used for indexing.
🚀 Application
advanced
2:00remaining
Extracting specific elements using fancy indexing
You have a 2D NumPy array representing scores of 5 students in 4 subjects:
scores = np.array([[80, 90, 70, 60],
                   [85, 95, 75, 65],
                   [78, 88, 68, 58],
                   [82, 92, 72, 62],
                   [79, 89, 69, 59]])
You want to extract the scores of students 0, 2, and 4 in subjects 1 and 3 using fancy indexing. Which code snippet produces the correct result?
NumPy
import numpy as np
scores = np.array([[80, 90, 70, 60],
                   [85, 95, 75, 65],
                   [78, 88, 68, 58],
                   [82, 92, 72, 62],
                   [79, 89, 69, 59]])
Aresult = scores[[0, 2, 4], [1, 3, 1]]
Bresult = scores[:, [1, 3]][[0, 2, 4]]
Cresult = scores[[0, 2, 4], :][:, [1, 3]]
Dresult = scores[[0, 2, 4]][:, [1, 3]]
Attempts:
2 left
💡 Hint
Remember that fancy indexing with two arrays selects elements pairwise, but you want a submatrix.
🧠 Conceptual
expert
2:00remaining
Understanding broadcasting in fancy indexing
Consider the following code snippet:
import numpy as np
arr = np.arange(12).reshape(3,4)
rows = np.array([0, 1, 2])
cols = np.array([[0, 1], [2, 3]])
result = arr[rows[:, None], cols]
print(result)
What is the shape of result and why?
A(3, 2) because rows[:, None] broadcasts with cols to select elements pairwise
B(3, 4) because arr is 3x4 and indexing preserves shape
C(2, 3) because cols shape is (2,2) and rows shape is (3,)
D(3, 2, 4) because of advanced indexing with 3D output
Attempts:
2 left
💡 Hint
Think about how broadcasting works between rows[:, None] and cols arrays during indexing.

Practice

(1/5)
1. What does fancy indexing with integer arrays in NumPy allow you to do?
easy
A. Create a new array filled with zeros
B. Sort an array in ascending order
C. Select multiple elements from an array using a list of positions
D. Change the data type of an array

Solution

  1. Step 1: Understand fancy indexing

    Fancy indexing uses a list or array of integers to pick elements by their positions.
  2. Step 2: Identify the correct operation

    It selects multiple elements from the original array based on given indices.
  3. Final Answer:

    Select multiple elements from an array using a list of positions -> Option C
  4. Quick Check:

    Fancy indexing = select elements by positions [OK]
Hint: Fancy indexing picks elements by position list [OK]
Common Mistakes:
  • Confusing fancy indexing with sorting
  • Thinking it changes data type
  • Assuming it creates arrays of zeros
2. Which of the following is the correct syntax to select elements at positions 0, 2, and 4 from a NumPy array arr using fancy indexing?
easy
A. arr{0, 2, 4}
B. arr(0, 2, 4)
C. arr[0:2:4]
D. arr[[0, 2, 4]]

Solution

  1. Step 1: Recall fancy indexing syntax

    Fancy indexing uses double square brackets with a list or array of indices inside.
  2. Step 2: Match syntax to options

    Only arr[[0, 2, 4]] uses correct double brackets and list format.
  3. Final Answer:

    arr[[0, 2, 4]] -> Option D
  4. Quick Check:

    Double brackets with list = correct fancy indexing [OK]
Hint: Use double brackets with list for fancy indexing [OK]
Common Mistakes:
  • Using parentheses instead of brackets
  • Using curly braces which are invalid
  • Using slicing syntax incorrectly
3. What is the output of the following code?
import numpy as np
arr = np.array([10, 20, 30, 40, 50])
indices = np.array([1, 3, 4])
result = arr[indices]
print(result)
medium
A. [20 40 50]
B. [10 30 40]
C. [20 30 40]
D. [50 40 20]

Solution

  1. Step 1: Understand the array and indices

    Original array is [10, 20, 30, 40, 50]. Indices are [1, 3, 4].
  2. Step 2: Select elements at given indices

    Elements at positions 1, 3, 4 are 20, 40, 50 respectively.
  3. Final Answer:

    [20 40 50] -> Option A
  4. Quick Check:

    arr[1,3,4] = [20 40 50] [OK]
Hint: Match indices to array positions to get output [OK]
Common Mistakes:
  • Mixing up indices and values
  • Using wrong positions from array
  • Confusing slicing with fancy indexing
4. Identify the error in the following code snippet:
import numpy as np
arr = np.array([5, 10, 15, 20])
indices = [1, 4]
print(arr[indices])
medium
A. IndexError because index 4 is out of bounds
B. SyntaxError due to wrong brackets
C. TypeError because indices is a list
D. No error, prints [10 20]

Solution

  1. Step 1: Check array size and indices

    Array length is 4, valid indices are 0 to 3. Index 4 is invalid.
  2. Step 2: Understand error type

    Accessing index 4 causes IndexError: index out of bounds.
  3. Final Answer:

    IndexError because index 4 is out of bounds -> Option A
  4. Quick Check:

    Index 4 invalid for length 4 array [OK]
Hint: Check if all indices are within array length [OK]
Common Mistakes:
  • Assuming list indices are always valid
  • Confusing syntax errors with index errors
  • Thinking list indices cause type errors
5. Given a 2D NumPy array 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?
hard
A. arr[[0,2,1], [2,1,0]]
B. arr[[0,1,2], [2,0,1]]
C. arr[[2,1,0], [0,1,2]]
D. arr[[0,1,2]][[2,0,1]]

Solution

  1. Step 1: Understand 2D fancy indexing

    To select elements at (row, col) positions, use two index arrays: one for rows, one for columns.
  2. 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].
  3. Step 3: Use fancy indexing syntax

    Use arr[[0,1,2], [2,0,1]] to get elements [3,4,8].
  4. Final Answer:

    arr[[0,1,2], [2,0,1]] -> Option B
  5. Quick Check:

    Rows and cols arrays match positions [OK]
Hint: Use two index arrays: rows and columns [OK]
Common Mistakes:
  • Mixing row and column indices order
  • Using chained indexing instead of fancy indexing
  • Using wrong index arrays for positions
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard