Challenge - 5 Problems
View vs Copy Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate2:00remaining
What is the output of modifying a view created by slicing a NumPy array?
Consider the following code where we create a NumPy array and slice it. What will be the content of the original array after modifying the slice?
NumPy
import numpy as np arr = np.array([10, 20, 30, 40, 50]) slice_arr = arr[1:4] slice_arr[0] = 99 print(arr)
Attempts:
2 left
💡 Hint
Remember that slicing a NumPy array returns a view, not a copy.
✗ Incorrect
Slicing a NumPy array returns a view, so modifying the slice changes the original array at the corresponding positions.
❓ Predict Output
intermediate2:00remaining
What happens when you modify a copy created by fancy indexing in NumPy?
Look at this code where we use fancy indexing to select elements. What will be the output of the original array after modifying the selected elements?
NumPy
import numpy as np arr = np.array([1, 2, 3, 4, 5]) selected = arr[[1, 3]] selected[0] = 99 print(arr)
Attempts:
2 left
💡 Hint
Fancy indexing returns a copy, not a view.
✗ Incorrect
Fancy indexing returns a copy, so modifying the selected array does not affect the original array.
🔧 Debug
advanced2:30remaining
Why does modifying a slice not change the original array here?
This code tries to modify a slice of a 2D NumPy array but the original array remains unchanged. What is the reason?
NumPy
import numpy as np arr = np.array([[1, 2], [3, 4], [5, 6]]) slice_arr = arr[[0, 2]] slice_arr[0, 0] = 99 print(arr)
Attempts:
2 left
💡 Hint
Check the type of indexing used to create the slice.
✗ Incorrect
Using fancy indexing (list of indices) returns a copy, so modifying the slice does not affect the original array.
❓ data_output
advanced2:00remaining
How many elements are changed in the original array after modifying a boolean mask view?
Given this code, how many elements in the original array are changed after modifying the masked view?
NumPy
import numpy as np arr = np.array([5, 10, 15, 20, 25]) mask = arr > 10 view = arr[mask] view[:] = 0 print(arr)
Attempts:
2 left
💡 Hint
Boolean indexing returns a copy, not a view.
✗ Incorrect
Boolean indexing returns a copy, so modifying view does not change the original array. No elements are changed.
🚀 Application
expert3:00remaining
How to safely modify a subset of a NumPy array without affecting the original?
You want to modify a subset of a NumPy array without changing the original array. Which approach below correctly achieves this?
Attempts:
2 left
💡 Hint
Think about when views or copies are created and how to avoid changing the original.
✗ Incorrect
Using .copy() creates a new array independent of the original. Modifying it does not affect the original array.