Bird
Raised Fist0
NumPydata~20 mins

np.unravel_index() for multi-dim positions in NumPy - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Unravel Index Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of np.unravel_index with a single flat index
What is the output of the following code snippet?
NumPy
import numpy as np
index = 5
shape = (3, 4)
result = np.unravel_index(index, shape)
print(result)
A(1, 2)
B(0, 5)
C(2, 1)
D(1, 1)
Attempts:
2 left
💡 Hint
Remember that unravel_index converts a flat index to a tuple of coordinates in the given shape.
❓ data_output
intermediate
2:00remaining
Shape of output from np.unravel_index with multiple indices
Given multiple flat indices, what is the shape of the output from np.unravel_index?
NumPy
import numpy as np
indices = [3, 7, 11]
shape = (3, 4)
result = np.unravel_index(indices, shape)
print(result)
AA tuple of 2 arrays, each of shape (3,)
BA tuple of 3 arrays, each of shape (2,)
CA single array of shape (3, 2)
DA list of 3 tuples, each of length 2
Attempts:
2 left
💡 Hint
Check the documentation: unravel_index returns a tuple with one array per dimension.
🔧 Debug
advanced
2:00remaining
Identify the error in using np.unravel_index with an invalid shape
What error does the following code raise?
NumPy
import numpy as np
index = 10
shape = (3, 3)
result = np.unravel_index(index, shape)
print(result)
AValueError: shape must be a tuple of positive integers
BIndexError: index 10 is out of bounds for array with size 9
CTypeError: index must be an integer or array of integers
DNo error, output is (3, 1)
Attempts:
2 left
💡 Hint
Check if the flat index is valid for the given shape size.
🚀 Application
advanced
2:00remaining
Using np.unravel_index to find coordinates of max value in a 3D array
You have a 3D numpy array. How can you find the coordinates of the maximum value using np.unravel_index?
NumPy
import numpy as np
arr = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
max_index = arr.argmax()
coords = np.unravel_index(max_index, arr.shape)
print(coords)
A(1, 1, 1)
B(0, 1, 1)
C(1, 0, 1)
D(0, 0, 1)
Attempts:
2 left
💡 Hint
The maximum value is 8. Find its position in the 3D array.
🧠 Conceptual
expert
2:00remaining
Understanding np.unravel_index output for high-dimensional arrays
For a 4D array with shape (2, 3, 4, 5), what is the length of the tuple returned by np.unravel_index for a single flat index?
A5
B1
C4
D20
Attempts:
2 left
💡 Hint
The tuple length equals the number of dimensions in the shape.

Practice

(1/5)
1. What does np.unravel_index() do in NumPy?
easy
A. It returns the total number of elements in an array.
B. It converts a flat index into a tuple of coordinate indices for a given shape.
C. It reshapes an array into a new shape without changing data.
D. It flattens a multi-dimensional array into a one-dimensional array.

Solution

  1. Step 1: Understand the function purpose

    np.unravel_index() takes a flat index and a shape to find the multi-dimensional coordinates.
  2. Step 2: Compare options with function behavior

    Only It converts a flat index into a tuple of coordinate indices for a given shape. describes converting a flat index to multi-dimensional indices, which matches the function's purpose.
  3. Final Answer:

    It converts a flat index into a tuple of coordinate indices for a given shape. -> Option B
  4. Quick Check:

    Function purpose = convert flat index to coordinates [OK]
Hint: Remember: unravel means 'find coordinates' from flat index [OK]
Common Mistakes:
  • Confusing unravel_index with flatten or reshape functions
  • Thinking it returns the total number of elements
  • Assuming it changes the array data
2. Which of the following is the correct syntax to use np.unravel_index() for a flat index 5 in a shape (3, 3)?
easy
A. np.unravel_index((3, 3), 5)
B. np.unravel_index(5, 3, 3)
C. np.unravel_index(5, (3, 3))
D. np.unravel_index([5], (3, 3))

Solution

  1. Step 1: Recall the function signature

    The correct syntax is np.unravel_index(indices, shape), where indices is an integer or array and shape is a tuple.
  2. Step 2: Match options to syntax

    np.unravel_index(5, (3, 3)) matches the correct syntax with index 5 and shape (3, 3). np.unravel_index([5], (3, 3)) uses a list for index which is allowed but less common for single index.
  3. Final Answer:

    np.unravel_index(5, (3, 3)) -> Option C
  4. Quick Check:

    Syntax = np.unravel_index(index, shape) [OK]
Hint: Use np.unravel_index(index, shape) with shape as a tuple [OK]
Common Mistakes:
  • Swapping the order of arguments
  • Passing shape as separate numbers instead of a tuple
  • Using list instead of integer for single index without need
3. What is the output of the following code?
import numpy as np
index = 7
shape = (3, 3)
result = np.unravel_index(index, shape)
print(result)
medium
A. (1, 1)
B. (1, 2)
C. (2, 0)
D. (2, 1)

Solution

  1. Step 1: Understand the shape and flat index

    The shape is (3, 3), so the array has 3 rows and 3 columns. Flat indices go row-wise: 0 to 8.
  2. Step 2: Calculate multi-dimensional indices for flat index 7

    Index 7 corresponds to row = 7 // 3 = 2, column = 7 % 3 = 1, so position is (2, 1).
  3. Final Answer:

    (2, 1) -> Option D
  4. Quick Check:

    Row = 7//3=2, Col = 7%3=1 [OK]
Hint: Divide index by shape dims to find row, mod for column [OK]
Common Mistakes:
  • Mixing row and column order
  • Using zero-based index incorrectly
  • Confusing division and modulo operations
4. The code below raises an error. What is the cause?
import numpy as np
index = 10
shape = (3, 3)
result = np.unravel_index(index, shape)
print(result)
medium
A. Index 10 is out of bounds for shape (3, 3).
B. Shape must be a list, not a tuple.
C. np.unravel_index requires a 1D array, not a scalar index.
D. Missing import statement for numpy.

Solution

  1. Step 1: Check the shape size

    Shape (3, 3) means total elements = 3*3 = 9, so valid flat indices are 0 to 8.
  2. Step 2: Analyze the index value

    Index 10 is greater than 8, so it is out of bounds and causes an error.
  3. Final Answer:

    Index 10 is out of bounds for shape (3, 3). -> Option A
  4. Quick Check:

    Max index = 8, given index = 10 [OK]
Hint: Check if index < product of shape dims to avoid errors [OK]
Common Mistakes:
  • Assuming tuple shape is invalid
  • Thinking np.unravel_index needs array input only
  • Ignoring index bounds for given shape
5. You have a 3D array with shape (4, 3, 2). You want to find the multi-dimensional indices for flat indices [5, 10, 15]. Which code correctly returns these positions?
hard
A. np.unravel_index([5, 10, 15], (4, 3, 2))
B. np.unravel_index(5, 10, 15, (4, 3, 2))
C. np.unravel_index((5, 10, 15), (4, 3, 2))
D. np.unravel_index([5, 10, 15], 4, 3, 2)

Solution

  1. Step 1: Understand input for multiple indices

    To convert multiple flat indices, pass a list or array of indices as first argument and shape tuple as second.
  2. Step 2: Match options to correct syntax

    np.unravel_index([5, 10, 15], (4, 3, 2)) correctly passes a list of indices and the shape tuple. np.unravel_index((5, 10, 15), (4, 3, 2)) passes a tuple instead of list, which also works but less common. np.unravel_index(5, 10, 15, (4, 3, 2)) and D have wrong argument formats.
  3. Final Answer:

    np.unravel_index([5, 10, 15], (4, 3, 2)) -> Option A
  4. Quick Check:

    Multiple indices = list + shape tuple [OK]
Hint: Use list of indices and shape tuple for multiple positions [OK]
Common Mistakes:
  • Passing multiple indices as separate arguments
  • Using tuple instead of list for indices (less common but works)
  • Passing shape as separate numbers instead of tuple
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