What does the ellipsis (...) represent in NumPy indexing?
The ellipsis (...) in NumPy indexing means 'include all the remaining dimensions here'. It helps to select slices across multiple dimensions without writing all indices explicitly.
Click to reveal answer
beginner
How would you select all elements in the last two dimensions of a 4D array using ellipsis?
You can use arr[..., :, :] to select all elements in the last two dimensions, regardless of the size of the first two dimensions.
Click to reveal answer
beginner
True or False: The ellipsis can only be used once in a NumPy indexing expression.
True. You can only use one ellipsis (...) in a single NumPy indexing expression.
Click to reveal answer
beginner
Given a 3D array arr with shape (3, 4, 5), what does arr[1, ...] select?
It selects all elements in the last two dimensions for the first dimension index 1. So the shape of arr[1, ...] is (4, 5).
Click to reveal answer
intermediate
Why is using ellipsis helpful when working with arrays of varying dimensions?
Ellipsis lets you write flexible code that works with arrays of different shapes by automatically including all remaining dimensions without specifying each one.
Click to reveal answer
What does arr[..., 0] select in a 3D array arr?
AAll elements in the first dimension at index 0
BAll elements in the middle dimension at index 0
COnly the first element of the array
DAll elements in the last dimension at index 0
✗ Incorrect
The ellipsis (...) means all preceding dimensions, so arr[..., 0] selects the element at index 0 in the last dimension for all other dimensions.
Can you use more than one ellipsis (...) in a single NumPy indexing expression?
ANo, only once
BYes, but only twice
CYes, unlimited times
DOnly if the array is 1D
✗ Incorrect
NumPy allows only one ellipsis (...) per indexing expression to avoid ambiguity.
If arr has shape (2, 3, 4, 5), what is the shape of arr[1, ..., 2]?
A(3, 4, 5, 2)
B(3, 4, 5)
C(3, 4)
D(3, 4, 5, 1)
✗ Incorrect
arr[1, ..., 2] fixes the first dimension at 1 and the last dimension at 2, leaving the middle two dimensions (3, 4).
What is the main benefit of using ellipsis in NumPy indexing?
ATo speed up computation
BTo reduce code length and handle arrays with unknown dimensions
CTo convert arrays to lists
DTo sort arrays
✗ Incorrect
Ellipsis helps write shorter, flexible code that works with arrays of different shapes by including all remaining dimensions automatically.
Which of the following is a valid use of ellipsis in NumPy?
Aarr[1, ..., 2]
Barr[..., ..., 2]
Carr[1, ..., ..., 2]
Darr[1, 2, ... , ...]
✗ Incorrect
Only one ellipsis is allowed per indexing expression, so arr[1, ..., 2] is valid, others are not.
Explain how the ellipsis (...) works in NumPy indexing and give an example with a 3D array.
Think about how you can avoid writing all indices for multi-dimensional arrays.
You got /3 concepts.
Describe a situation where using ellipsis in indexing makes your code more flexible.
Consider working with data that can have different shapes.
You got /3 concepts.
Practice
(1/5)
1. What does the ellipsis (...) represent when indexing a NumPy array?
easy
A. It selects all remaining dimensions in the array.
B. It selects only the first dimension of the array.
C. It selects the last element of the array.
D. It creates a new axis in the array.
Solution
Step 1: Understand ellipsis usage
The ellipsis (...) is used to replace multiple colons when slicing multi-dimensional arrays.
Step 2: Interpret ellipsis effect
It selects all remaining dimensions not explicitly indexed, making code shorter and clearer.
Final Answer:
It selects all remaining dimensions in the array. -> Option A
Quick Check:
Ellipsis = all remaining dimensions [OK]
Hint: Ellipsis means 'all other dimensions' in slicing [OK]
Common Mistakes:
Thinking ellipsis selects only one dimension
Confusing ellipsis with new axis insertion
Assuming ellipsis selects last element only
2. Which of the following is the correct syntax to select all rows and columns except the last one in a 3D NumPy array arr using ellipsis?
easy
A. arr[:, :, -1]
B. arr[..., :-1]
C. arr[..., -1]
D. arr[:, :-1, :]
Solution
Step 1: Understand the array shape and slicing
For a 3D array, arr[..., :-1] means select all elements in the first two dimensions and slice the last dimension up to but not including the last element.
Step 2: Compare options
arr[..., :-1] uses ellipsis to cover first two dimensions and slices last dimension correctly. arr[:, :, -1] incorrectly selects only the last element in the last dimension. arr[..., -1] selects only the last slice, and D slices the second dimension incorrectly.
Final Answer:
arr[..., :-1] -> Option B
Quick Check:
Ellipsis + slice last dim = arr[..., :-1] [OK]
Hint: Ellipsis covers all but last dim; slice last dim with :-1 [OK]
Common Mistakes:
Using ellipsis but slicing wrong dimension
Confusing negative index with slice
Not using ellipsis and writing long slices
3. Given the code:
import numpy as np
arr = np.arange(24).reshape(2,3,4)
result = arr[1, ..., 2]
What is the value of result?
medium
A. [2 6 10]
B. [10 14 18]
C. [10 11 12]
D. [14 18 22]
Solution
Step 1: Understand array shape and indexing
The array arr has shape (2, 3, 4). Indexing arr[1, ..., 2] means select the second block (index 1) in the first dimension, all elements in the second dimension, and the element at index 2 in the last dimension.
Step 2: Extract values
For arr[1], the 3x4 block is: [ [12,13,14,15], [16,17,18,19], [20,21,22,23] ] Selecting all rows and column 2 gives [14, 18, 22]. But since the last dimension index is 2, it picks the third element in each row. So the result is [14, 18, 22].
Final Answer:
[14 18 22] -> Option D
Quick Check:
arr[1, :, 2] = [14 18 22] [OK]
Hint: Ellipsis fills middle dims; last index picks element in last dim [OK]
Common Mistakes:
Confusing dimension order
Mixing up index 1 and 2
Assuming ellipsis selects only one dimension
4. Consider the code:
import numpy as np
arr = np.arange(27).reshape(3,3,3)
print(arr[..., 1:])
It raises an error. What is the most likely cause?
medium
A. The code is correct and will not raise an error.
B. Ellipsis cannot be combined with slices.
C. The slice 1: is invalid for the last dimension.
D. The array shape does not support ellipsis indexing.
Solution
Step 1: Analyze ellipsis with slice
Ellipsis (...) can be combined with slices to select parts of the array. Here, arr[..., 1:] means select all elements in the first two dimensions and slice from index 1 to end in the last dimension.
Step 2: Check array shape compatibility
The array shape is (3,3,3), so slicing last dimension from 1 to end is valid (indexes 1 and 2). No error should occur.
Final Answer:
The code is correct and will not raise an error. -> Option A
Quick Check:
Ellipsis + slice = valid syntax [OK]
Hint: Ellipsis works fine with slices; no error here [OK]
Common Mistakes:
Assuming ellipsis can't be combined with slices
Thinking slice 1: is out of bounds
Believing ellipsis changes array shape
5. You have a 4D NumPy array data with shape (5, 4, 3, 2). You want to select the last element in the second dimension, all elements in the third dimension, and the first element in the last dimension, for all elements in the first dimension. Which indexing expression using ellipsis is correct?
hard
A. data[:, -1, :, 0]
B. data[:, ..., :, 0]
C. data[:, -1, ..., 0]
D. data[:, -1, :, 0, ...]
Solution
Step 1: Understand the array shape and desired selection
The array shape is (5, 4, 3, 2). We want: - all elements in first dimension (5) - last element in second dimension (index -1) - all elements in third dimension (3) - first element in last dimension (index 0)
Step 2: Use ellipsis to simplify indexing
Using data[:, -1, ..., 0] means: - select all in first dim - select last in second dim - ellipsis covers remaining dims (third and last) - then select 0 in last dim But ellipsis here covers dims 3 and 4, so 0 applies to last dim. data[:, -1, ..., 0] matches this logic correctly.
Step 3: Check other options
data[:, -1, :, 0] is correct but does not use ellipsis. data[:, ..., :, 0] uses ellipsis but selects all elements in the second dimension (instead of the last one). data[:, -1, :, 0, ...] has too many indices (5) for 4D array.
Final Answer:
data[:, -1, ..., 0] -> Option C
Quick Check:
Ellipsis fills middle dims; index last dim after ellipsis [OK]
Hint: Ellipsis fills middle dims; place indices before and after correctly [OK]