Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Masked arrays concept
📖 Scenario: Imagine you have a list of temperatures recorded over a week. Some sensors failed and gave wrong readings, which you want to ignore in your analysis.
🎯 Goal: You will create a masked array to hide the wrong temperature readings and then calculate the average temperature ignoring those bad values.
📋 What You'll Learn
Create a numpy array with exact temperature values
Create a mask array to mark wrong readings
Create a masked array using numpy.ma module
Calculate the mean of the masked array ignoring masked values
Print the masked array and the calculated mean
💡 Why This Matters
🌍 Real World
Sensors and data collection often produce invalid or missing data. Masked arrays help ignore these bad values during analysis.
💼 Career
Data scientists and analysts use masked arrays to clean and analyze real-world datasets with missing or corrupted data.
Progress0 / 4 steps
1
Create the temperature data array
Create a numpy array called temperatures with these exact values: [22.5, 21.0, -999.0, 23.0, 22.0, -999.0, 24.5]. The value -999.0 represents wrong sensor readings.
NumPy
Hint
Use np.array([...]) to create the array with the exact values.
2
Create the mask for wrong readings
Create a boolean numpy array called mask that is True where temperatures equals -999.0 and False elsewhere.
NumPy
Hint
Use a comparison like temperatures == -999.0 to create the mask.
3
Create the masked array
Use np.ma.masked_array to create a masked array called masked_temps from temperatures using the mask array.
NumPy
Hint
Use np.ma.masked_array(data, mask=mask) to create the masked array.
4
Print the masked array and calculate mean
Print the masked_temps array. Then calculate the mean of masked_temps using its .mean() method and print the result.
NumPy
Hint
Use print(masked_temps) and print(masked_temps.mean()).
Practice
(1/5)
1. What is the main purpose of using masked arrays in NumPy?
easy
A. To speed up array computations by using GPU
B. To sort arrays in ascending order
C. To convert arrays into lists
D. To mark certain data points as invalid without removing them
Solution
Step 1: Understand masked arrays concept
Masked arrays allow marking some elements as invalid or missing without deleting them.
Step 2: Compare options with concept
Only To mark certain data points as invalid without removing them correctly describes this purpose; others describe unrelated operations.
Final Answer:
To mark certain data points as invalid without removing them -> Option D
Quick Check:
Masked arrays = mark invalid data [OK]
Hint: Masked arrays hide invalid data without deleting it [OK]
Common Mistakes:
Thinking masked arrays delete invalid data
Confusing masked arrays with sorting or conversion
Assuming masked arrays speed up GPU computations
2. Which of the following is the correct way to create a masked array from a NumPy array arr where values equal to 0 are masked?
easy
A. np.ma.masked_array(arr, mask=arr == 0)
B. np.ma.masked_where(arr, arr == 0)
C. np.ma.masked_array(arr == 0)
D. np.ma.mask(arr, arr == 0)
Solution
Step 1: Recall masked_array syntax
The correct syntax is np.ma.masked_array(data, mask=condition).
Step 2: Match options with syntax
np.ma.masked_array(arr, mask=arr == 0) uses np.ma.masked_array with mask=arr == 0, which is correct. np.ma.masked_where(arr, arr == 0) reverses arguments, C misses data argument, D uses invalid function.
Final Answer:
np.ma.masked_array(arr, mask=arr == 0) -> Option A
A. np.ma.masked_array requires a list, not a NumPy array
B. Mask array shape does not match data array shape
C. Boolean mask must be integers, not booleans
D. Masked arrays cannot be created from 1D arrays
Solution
Step 1: Check shapes of data and mask
Data array shape is (3,), mask shape is (2,), which do not match.
Step 2: Understand mask shape requirement
Mask must have the same shape as data to apply element-wise masking.
Final Answer:
Mask array shape does not match data array shape -> Option B
Quick Check:
Mask shape must match data shape [OK]
Hint: Mask shape must match data shape exactly [OK]
Common Mistakes:
Using mask with different shape than data
Thinking mask must be integer array
Believing masked_array needs list input
5. You have a dataset with some invalid temperature readings marked as -999. How would you create a masked array to ignore these invalid values and then calculate the average temperature ignoring them?
hard
A. Use np.ma.masked_where(data != -999, data) and then call .mean()
B. Replace -999 with 0 and then calculate mean normally
C. Use np.ma.masked_array(data, mask=(data == -999)) and then call .mean()
D. Filter out -999 values manually and use np.array.mean()
Solution
Step 1: Mask invalid values correctly
Mask where data equals -999 to mark invalid readings.
Step 2: Calculate mean ignoring masked values
Calling .mean() on masked array ignores masked elements automatically.
Final Answer:
Use np.ma.masked_array(data, mask=(data == -999)) and then call .mean() -> Option C
Quick Check:
Mask invalids, then mean() ignores them [OK]
Hint: Mask invalids with condition, then use .mean() [OK]