Challenge - 5 Problems
View vs Copy Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediateWhat 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
intermediateWhat 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
advancedWhy 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
advancedHow 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
expertHow 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.
