Skip to content

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