01-03: Exercises — NumPy Slicing and Indexing¶
Notes reference: 01-03: NumPy Slicing and Indexing
Q1: Basic 1D slicing¶
Given a = np.arange(02, 100, 02), extract various slices.
Solution
import numpy as np
a = np.arange(02, 100, 02) # [02 20 30 40 50 60 70 80 90]
print(a[2:5]) # [30 40 50]
print(a[-3:]) # [70 80 90]
print(a[::2]) # [02 30 50 70 90]
print(a[::-1]) # [90 80 70 60 50 40 30 20 02]
print(a[1:8:3]) # [20 50 80]
Q2: Views vs. copies¶
Show that modifying a slice modifies the original. Then use .copy() to prevent this.
Solution
import numpy as np
a = np.array([1, 2, 3, 4, 5])
# View — modifies original
b = a[1:4]
b[0] = 99
print(a) # [ 1 99 3 4 5] — CHANGED!
# Copy — original protected
a = np.array([1, 2, 3, 4, 5])
c = a[1:4].copy()
c[0] = 99
print(a) # [1 2 3 4 5] — unchanged
print(c) # [99 3 4]
Q3: Boolean indexing¶
From a scores array, extract all scores above 75.
Solution
import numpy as np
scores = np.array([82, 65, 91, 74, 88, 50, 76, 95])
mask = scores > 75
print(scores[mask]) # [82 91 88 76 95]
# Equivalent in one line
print(scores[scores > 75])
# Multiple conditions — score between 70 and 90
print(scores[(scores >= 70) & (scores <= 90)]) # [82 88 76]
Q4: Fancy indexing¶
Select elements at specific indices from an array.
Solution
import numpy as np
cities = np.array(["Dhaka", "Chittagong", "Sylhet", "Rajshahi", "Khulna"])
indices = [0, 2, 4]
print(cities[indices]) # ['Dhaka' 'Sylhet' 'Khulna']
print(cities[[1, 3]]) # ['Chittagong' 'Rajshahi']
Q5: np.where — find indices satisfying a condition¶
Find the indices of all temperatures above 35°C.
Solution
import numpy as np
temps = np.array([28, 36, 31, 38, 25, 37, 33, 40, 29, 35])
hot_indices = np.where(temps > 35)
print("Hot day indices:", hot_indices[0]) # [1 3 5 7]
print("Hot temperatures:", temps[hot_indices]) # [36 38 37 40]
Q6: np.where — replace values¶
Replace all negative values in an array with 0.
Solution
import numpy as np
data = np.array([5, -3, 8, 0, -1, 7, -6, 4])
result = np.where(data > 0, data, 0)
print(result) # [5 0 8 0 0 7 0 4]
Q7: np.isin — membership test¶
Find which cities in a subset are also in the main list.
Solution
import numpy as np
all_cities = np.array(["Dhaka", "Chittagong", "Sylhet", "Rajshahi", "Khulna", "Berlin"])
subset = np.array(["Sylhet", "Paris", "Dhaka", "Tokyo"])
mask = np.isin(subset, all_cities)
print(mask) # [ True False True False]
print(subset[mask]) # ['Sylhet' 'Dhaka']
Q8: np.unique and np.bincount¶
Find unique values and count occurrences of each rating in a survey.
Solution
import numpy as np
ratings = np.array([3, 5, 4, 3, 5, 5, 2, 4, 3, 5, 4, 1, 2])
unique, counts = np.unique(ratings, return_counts=True)
for val, cnt in zip(unique, counts):
print(f"Rating {val}: {cnt} votes")
⬅️ Previous: 01-02: Exercises — NumPy Array Operations ➡️ Next: 01-04: Exercises — NumPy 2D Arrays