📖 Scenario: You have a small grayscale image represented as a 2D array of pixel brightness values. Each value ranges from 0 (black) to 255 (white). You want to perform simple image manipulations using arrays.
🎯 Goal: Learn how to create a numpy array to represent an image, set a brightness threshold, create a mask to highlight bright pixels, and display the result.
📋 What You'll Learn
Use numpy to create and manipulate arrays
Create a 2D numpy array with exact pixel values
Define a brightness threshold variable
Use array operations to create a mask of bright pixels
Print the resulting mask array
💡 Why This Matters
🌍 Real World
Image processing is used in photography, medical imaging, and computer vision to analyze and enhance pictures.
💼 Career
Understanding how to manipulate images as arrays is a key skill for data scientists working with image data or machine learning.
Progress0 / 4 steps
1
Create the image array
Create a 2D numpy array called image with these exact pixel values: [[10, 200, 30], [255, 100, 50], [0, 180, 220]].
NumPy
Hint
Use np.array() to create the 2D array with the exact values.
2
Set the brightness threshold
Create a variable called threshold and set it to 150.
NumPy
Hint
Just assign the number 150 to the variable threshold.
3
Create a mask for bright pixels
Create a variable called bright_mask that is a boolean numpy array. It should be True where image pixels are greater than threshold, and False otherwise.
NumPy
Hint
Use the comparison operator > between image and threshold to get a boolean array.
4
Print the bright pixel mask
Print the variable bright_mask to display the boolean mask array.
NumPy
Hint
Use print(bright_mask) to show the boolean array.
Practice
(1/5)
1. What does a 2D numpy array represent when used for a grayscale image?
easy
A. Pixel brightness values arranged in rows and columns
B. A list of image file names
C. The color channels of an image
D. The size of the image in bytes
Solution
Step 1: Understand image representation
A grayscale image is made of pixels arranged in rows and columns, each pixel having a brightness value.
Step 2: Connect to numpy array structure
A 2D numpy array stores these brightness values in a grid matching the image layout.
Final Answer:
Pixel brightness values arranged in rows and columns -> Option A
Quick Check:
Grayscale image = 2D pixel brightness array [OK]
Hint: Grayscale images use 2D arrays for pixel brightness [OK]
Common Mistakes:
Confusing pixel values with file names
Thinking 2D arrays store color channels
Mixing image size with pixel data
2. Which numpy code correctly flips a 2D image array img vertically?
easy
A. np.fliplr(img)
B. np.flip(img, axis=1)
C. np.flip(img, axis=0)
D. np.flip(img)
Solution
Step 1: Understand vertical flip axis
Vertical flip reverses rows, which corresponds to axis 0 in numpy arrays.
Adding 5 to a numpy array adds 5 to every element (broadcasting).
Step 2: Calculate new array values
Each element increases by 5: 10+5=15, 20+5=25, 30+5=35, 40+5=45.
Final Answer:
[[15 25]
[35 45]] -> Option D
Quick Check:
Array + 5 adds 5 to all elements [OK]
Hint: Adding scalar adds to all pixels in array [OK]
Common Mistakes:
Thinking addition changes shape
Adding 5 only to first row or column
Confusing addition with multiplication
4. What is wrong with this code to crop the top-left 2x2 part of a 3x3 image array img?:
cropped = img[0:2, 0:3]
medium
A. It crops 2 rows but 3 columns, not 2 columns
B. It causes an index error
C. It flips the image instead of cropping
D. It returns the whole image
Solution
Step 1: Analyze slicing indices
The slice img[0:2, 0:3] selects rows 0 and 1 (2 rows) and columns 0,1,2 (3 columns).
Step 2: Compare to desired crop size
We want a 2x2 crop, but this selects 2x3, so it includes one extra column.
Final Answer:
It crops 2 rows but 3 columns, not 2 columns -> Option A
Quick Check:
Slicing columns 0:3 selects 3 columns [OK]
Hint: Check slice ranges match desired rows and columns [OK]
Common Mistakes:
Assuming slicing is exclusive of end index
Expecting error from out-of-range slice
Confusing rows and columns order
5. You have a color image as a 3D numpy array img with shape (100, 100, 3). How do you create a new image gray_img by averaging the color channels for each pixel?
hard
A. gray_img = img.sum(axis=0)
B. gray_img = img.mean(axis=2)
C. gray_img = img[:, :, 0]
D. gray_img = np.flip(img, axis=1)
Solution
Step 1: Understand image shape and channels
The shape (100, 100, 3) means 100x100 pixels with 3 color channels (RGB) along axis 2.
Step 2: Average color channels per pixel
Using img.mean(axis=2) calculates the average of the 3 channels for each pixel, producing a 2D grayscale image.
Final Answer:
gray_img = img.mean(axis=2) -> Option B
Quick Check:
Mean over axis 2 averages color channels [OK]
Hint: Use mean(axis=2) to average RGB channels [OK]
Common Mistakes:
Summing over wrong axis
Selecting only one color channel
Using flip instead of averaging
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.