Bird
Raised Fist0
NumPydata~20 mins

Combining fancy and slice indexing in NumPy - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Fancy Slice Indexing Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of combining fancy and slice indexing on a 2D array
What is the output of this code snippet?
import numpy as np
arr = np.arange(16).reshape(4,4)
result = arr[[1,3], 1:3]
NumPy
import numpy as np
arr = np.arange(16).reshape(4,4)
result = arr[[1,3], 1:3]
print(result)
A
[[1 2]
 [9 10]]
B
[[1 2 3]
 [9 10 11]]
C
[[5 6 7]
 [13 14 15]]
D
[[5 6]
 [13 14]]
Attempts:
2 left
💡 Hint
Remember that fancy indexing selects specific rows, and slice indexing selects columns.
❓ data_output
intermediate
2:00remaining
Shape of array after combining fancy and slice indexing
Given the code below, what is the shape of the resulting array?
import numpy as np
arr = np.arange(27).reshape(3,3,3)
result = arr[[0,2], :, 1:3]
NumPy
import numpy as np
arr = np.arange(27).reshape(3,3,3)
result = arr[[0,2], :, 1:3]
print(result.shape)
A(2, 3, 2)
B(3, 2, 2)
C(2, 2, 3)
D(3, 3, 2)
Attempts:
2 left
💡 Hint
Fancy indexing on the first axis selects 2 slices, then full slice on second axis, then slice on third axis.
🔧 Debug
advanced
2:00remaining
Identify the error in combining fancy and slice indexing
What error does this code raise?
import numpy as np
arr = np.arange(9).reshape(3,3)
result = arr[1:3, [0, 2], 1]
NumPy
import numpy as np
arr = np.arange(9).reshape(3,3)
result = arr[1:3, [0, 2], 1]
ATypeError: unhashable type: 'slice'
BIndexError: too many indices for array
CValueError: shape mismatch in fancy indexing
DNo error, outputs a 2D array
Attempts:
2 left
💡 Hint
Check how many indices the array has and how many are used.
🚀 Application
advanced
2:00remaining
Extract specific rows and columns using combined indexing
You have a 5x5 numpy array. You want to extract rows 0, 2, and 4, but only columns 1 to 3 (inclusive start, exclusive end). Which code snippet correctly does this?
Aarr[1:4, 0:3]
Barr[1:4, [0, 2, 4]]
Carr[[0, 2, 4], 1:4]
Darr[[1, 2, 3], 0:3]
Attempts:
2 left
💡 Hint
Remember fancy indexing selects rows, slice selects columns.
🧠 Conceptual
expert
2:00remaining
Understanding the output shape when combining fancy and slice indexing
Consider a 3D numpy array with shape (4, 5, 6). If you use fancy indexing on the first axis with 2 indices and slice indexing on the second axis with 3:5, and slice indexing on the third axis with 1:4, what will be the shape of the resulting array?
A(2, 2, 3)
B(4, 2, 3)
C(2, 3, 3)
D(2, 5, 3)
Attempts:
2 left
💡 Hint
Fancy indexing changes the size of the first axis to the number of indices selected.

Practice

(1/5)
1. What does combining fancy indexing and slice indexing in NumPy allow you to do?
arr[[0, 2], 1:4] selects:
easy
A. Rows 0 to 2, columns 1 and 4
B. Rows 1 to 4, columns 0 and 2
C. Rows 0 and 2, columns 1 to 3
D. Rows 1 and 4, columns 0 to 2

Solution

  1. Step 1: Understand fancy indexing for rows

    The fancy index [0, 2] selects rows 0 and 2 specifically.
  2. Step 2: Understand slice indexing for columns

    The slice 1:4 selects columns starting at 1 up to but not including 4, so columns 1, 2, and 3.
  3. Final Answer:

    Rows 0 and 2, columns 1 to 3 -> Option C
  4. Quick Check:

    Fancy rows + slice columns = selected subarray [OK]
Hint: Fancy picks rows, slice picks continuous columns [OK]
Common Mistakes:
  • Confusing rows and columns in indexing
  • Forgetting slice end is exclusive
  • Mixing up fancy and slice roles
2. Which of the following is the correct syntax to select rows 1 and 3 and columns 2 to 4 from a NumPy array arr?
easy
A. arr[[1, 3], 2:5]
B. arr[1:3, 2:5]
C. arr[1, 3, 2:5]
D. arr[[1, 3], [2:5]]

Solution

  1. Step 1: Identify fancy indexing for rows

    To select rows 1 and 3, use fancy indexing with a list: [1, 3].
  2. Step 2: Use slice for columns

    To select columns 2 to 4, use slice 2:5 (end exclusive).
  3. Final Answer:

    arr[[1, 3], 2:5] -> Option A
  4. Quick Check:

    Fancy rows + slice columns syntax correct [OK]
Hint: Fancy indexing uses lists, slice uses colon syntax [OK]
Common Mistakes:
  • Using commas inside fancy index list
  • Using slice inside list brackets
  • Incorrect slice end index
3. Given the array:
import numpy as np
arr = np.array([[10, 20, 30, 40],
                [50, 60, 70, 80],
                [90, 100, 110, 120],
                [130, 140, 150, 160]])
print(arr[[1, 3], 1:3])

What is the output?
medium
A. [[ 70 80] [150 160]]
B. [[ 60 70] [140 150]]
C. [[ 50 60] [130 140]]
D. [[ 60 70 80] [140 150 160]]

Solution

  1. Step 1: Select rows using fancy indexing

    Rows 1 and 3 are:
    [50, 60, 70, 80]
    [130, 140, 150, 160]
  2. Step 2: Select columns 1 to 2 (slice 1:3)

    Columns 1 and 2 for these rows are:
    Row 1: 60, 70
    Row 3: 140, 150
  3. Final Answer:

    [[ 60 70] [140 150]] -> Option B
  4. Quick Check:

    Fancy rows + slice columns output matches [OK]
Hint: Pick rows first, then slice columns [OK]
Common Mistakes:
  • Selecting wrong rows or columns
  • Including column 3 by mistake
  • Confusing row and column indices
4. What is wrong with this code snippet?
import numpy as np
arr = np.arange(16).reshape(4,4)
result = arr[1:3, [0, 2]]
print(result)
medium
A. It prints rows 1 and 2 with columns 0 and 2 correctly
B. It raises an error because slice and fancy indexing cannot be combined
C. It prints rows 0 and 2 with columns 1 and 3 incorrectly
D. It raises an error because the fancy index list is invalid

Solution

  1. Step 1: Understand slice and fancy indexing combination

    Slice 1:3 selects rows 1 and 2. Fancy index [0, 2] selects columns 0 and 2.
  2. Step 2: Check if code runs and output

    This combination is valid in NumPy and prints the selected subarray without error.
  3. Final Answer:

    It prints rows 1 and 2 with columns 0 and 2 correctly -> Option A
  4. Quick Check:

    Slice rows + fancy columns works fine [OK]
Hint: Slice and fancy indexing can combine on different axes [OK]
Common Mistakes:
  • Thinking slice and fancy indexing cannot mix
  • Confusing which axis uses slice or fancy
  • Expecting an error when code is valid
5. You have a 5x5 NumPy array arr. You want to select rows 0, 2, and 3, but only columns 1 to 3 inclusive. Which code correctly does this?
hard
A. arr[1:4, [0, 2, 4]]
B. arr[0:5:2, 1:4]
C. arr[[0, 2, 4], [1, 2, 3]]
D. arr[[0, 2, 3], 1:4]

Solution

  1. Step 1: Identify fancy indexing for rows

    Rows 0, 2, and 3 are selected using fancy indexing: [0, 2, 3].
  2. Step 2: Use slice for columns 1 to 3 inclusive

    Slice 1:4 selects columns 1, 2, and 3 (end index exclusive).
  3. Final Answer:

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

    Fancy rows + slice columns selects correct subarray [OK]
Hint: Fancy list for rows, slice for continuous columns [OK]
Common Mistakes:
  • Using slice for rows instead of fancy list
  • Using fancy list for columns incorrectly
  • Off-by-one error in slice end index
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