We use array indexing and slicing to pick specific parts of data from a list or array. It helps us focus on the data we need.
You want to get the first 5 days of sales data from a month.
You need to select every other item from a list of temperatures.
You want to extract a specific column or row from a table of numbers.
You want to reverse the order of a list of names.
You want to get a subset of data for analysis without changing the original data.
Syntax
Data Analysis Python
import numpy as np
# Create an array
array = np.array([10, 20, 30, 40, 50])
# Indexing: get one element by position
value = array[0]
# Slicing: get a part of the array
subset = array[start:stop:step]
Indexing starts at 0, so the first element is at position 0.
Slicing uses start (inclusive), stop (exclusive), and step (optional) to select elements.
Examples
Gets the first element, which is 5.
Data Analysis Python
import numpy as np
array = np.array([5, 10, 15, 20, 25])
# Indexing first element
first_element = array[0]
print(first_element)
Gets elements at positions 1 and 2, which are 10 and 15.
Data Analysis Python
import numpy as np
array = np.array([5, 10, 15, 20, 25])
# Slicing from index 1 to 3 (3 not included)
slice_part = array[1:3]
print(slice_part)
Gets elements at positions 0, 2, 4: 5, 15, 25.
Data Analysis Python
import numpy as np
array = np.array([5, 10, 15, 20, 25])
# Slicing with step: every other element
step_slice = array[::2]
print(step_slice)
Gets the last element, which is 25.
Data Analysis Python
import numpy as np
array = np.array([5, 10, 15, 20, 25])
# Negative indexing: last element
last_element = array[-1]
print(last_element)
Sample Program
This program shows how to get single elements and parts of an array using indexing and slicing.
Data Analysis Python
import numpy as np
# Create an array of numbers
numbers = np.array([100, 200, 300, 400, 500])
print('Original array:', numbers)
# Indexing: get the third element (index 2)
third_element = numbers[2]
print('Third element:', third_element)
# Slicing: get elements from index 1 to 3 (3 not included)
slice_part = numbers[1:3]
print('Slice from index 1 to 3:', slice_part)
# Slicing with step: get every second element
step_slice = numbers[::2]
print('Every second element:', step_slice)
# Negative indexing: get last two elements
last_two = numbers[-2:]
print('Last two elements:', last_two)
OutputSuccess
Important Notes
Indexing and slicing are very fast operations with arrays.
Negative indexes count from the end of the array.
Common mistake: forgetting that the stop index in slicing is not included.
Use slicing when you want a part of the data without changing the original array.
Summary
Indexing gets one element by position.
Slicing gets a range or pattern of elements.
Remember: start is included, stop is excluded in slicing.
Practice
(1/5)
1. What does the expression arr[2] do when arr is a Python list?
easy
A. Returns the first two elements of the list
B. Removes the element at index 2 from the list
C. Returns a new list with elements from index 0 to 2
D. Returns the element at index 2 (third element) of the list
Solution
Step 1: Understand list indexing
In Python, list indexing starts at 0, so index 2 means the third element.
Step 2: Identify what arr[2] returns
This expression returns the single element at position 2, not a range or removal.
Final Answer:
Returns the element at index 2 (third element) of the list -> Option D
Quick Check:
Index 2 means third element [OK]
Hint: Indexing gets one element by position [OK]
Common Mistakes:
Thinking slicing syntax is used for single element
Confusing index 2 with first two elements
Assuming it removes an element
2. Which of the following is the correct syntax to get a slice of a list lst from index 1 to 4 (excluding 4)?
easy
A. lst(1:4)
B. lst[1:4]
C. lst[1,4]
D. lst[1-4]
Solution
Step 1: Recall Python slice syntax
Slicing uses square brackets with colon: start:stop, where stop is excluded.
Step 2: Check each option
Only lst[1:4] uses correct slice syntax to get elements at indices 1, 2, 3.
Final Answer:
lst[1:4] -> Option B
Quick Check:
Slice syntax uses colon [OK]
Hint: Use colon inside brackets for slicing [OK]
Common Mistakes:
Using comma instead of colon
Using parentheses instead of brackets
Using dash instead of colon
3. Given arr = [10, 20, 30, 40, 50], what is the output of arr[1:4]?
medium
A. [20, 30, 40]
B. [10, 20, 30, 40]
C. [30, 40, 50]
D. [20, 30, 40, 50]
Solution
Step 1: Understand slicing indices
The slice arr[1:4] includes elements from index 1 up to but not including index 4.
Step 2: Extract elements at indices 1, 2, 3
These are 20 (index 1), 30 (index 2), and 40 (index 3).
Final Answer:
[20, 30, 40] -> Option A
Quick Check:
Slice excludes stop index [OK]
Hint: Slice includes start, excludes stop index [OK]
Common Mistakes:
Including element at stop index
Confusing indices with values
Off-by-one errors in slicing
4. What is wrong with this code snippet?
arr = [1, 2, 3, 4, 5]
print(arr[2:6])
medium
A. It will print elements from index 2 to 6 including index 6
B. It will cause an IndexError because 6 is out of range
C. It will print elements from index 2 to 5 without error
D. It will print only the element at index 6
Solution
Step 1: Understand slicing behavior with out-of-range stop
Python slicing does not raise error if stop index is beyond list length; it stops at the list end.
Step 2: Check what arr[2:6] returns
It returns elements from index 2 to the end (index 4), which are [3, 4, 5].
Final Answer:
It will print elements from index 2 to 5 without error -> Option C
Quick Check:
Slicing stop can exceed length safely [OK]
Hint: Slicing stop index can exceed list length safely [OK]
Common Mistakes:
Expecting IndexError for slicing beyond length
Thinking slice includes stop index
Confusing slicing with indexing
5. You have a list data = [5, 10, 15, 20, 25, 30]. How do you get every second element starting from index 1 up to index 5?
hard
A. data[1:6:2]
B. data[1:5:2]
C. data[1:5]
D. data[::2]
Solution
Step 1: Understand slicing with step
Slicing syntax is start:stop:step. To get every second element, step=2.
Step 2: Identify correct start and stop
Start is 1, stop is 6 to include element at index 5 (stop excluded).
Step 3: Verify the slice
data[1:6:2] returns elements at indices 1, 3, 5 -> [10, 20, 30].
Final Answer:
data[1:6:2] -> Option A
Quick Check:
Use step in slice for skipping elements [OK]
Hint: Use third slice value for step size [OK]
Common Mistakes:
Using wrong stop index excluding last element
Omitting step and getting all elements
Confusing step with start or stop
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.