Bird
Raised Fist0
NumPydata~10 mins

Views share memory with originals in NumPy - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to create a view of the original NumPy array.

NumPy
import numpy as np
arr = np.array([1, 2, 3, 4])
view_arr = arr[1]
Drag options to blanks, or click blank then click option'
A.reshape(2, 2)
B.copy()
C.flatten()
D.view()
Attempts:
3 left
💡 Hint
Common Mistakes
Using .copy() instead of .view() creates a separate array, not a view.
Using .reshape() changes shape but does not guarantee shared memory.
Using .flatten() returns a copy, not a view.
2fill in blank
medium

Complete the code to modify the view and see the change in the original array.

NumPy
import numpy as np
arr = np.array([10, 20, 30, 40])
view_arr = arr.view()
view_arr[1] = [1]
result = arr[1]
Drag options to blanks, or click blank then click option'
A20
B25
C50
D40
Attempts:
3 left
💡 Hint
Common Mistakes
Assigning the same original value does not show the effect of shared memory.
Assigning a value outside the array range causes an error.
3fill in blank
hard

Fix the error in the code to confirm if two arrays share memory.

NumPy
import numpy as np
arr = np.array([5, 6, 7, 8])
view_arr = arr.view()
shares_memory = np.shares_memory(arr, [1])
Drag options to blanks, or click blank then click option'
Aview_arr
Barr.copy()
Carr.flatten()
Darr.reshape(2, 2)
Attempts:
3 left
💡 Hint
Common Mistakes
Passing arr.copy() instead of the view array returns False.
Passing reshaped or flattened arrays may or may not share memory depending on the operation.
4fill in blank
hard

Fill both blanks to create a view and modify it to see the effect on the original array.

NumPy
import numpy as np
arr = np.array([100, 200, 300, 400])
view_arr = arr[1]
view_arr[2] = [2]
Drag options to blanks, or click blank then click option'
A.view()
B.copy()
C350
D250
Attempts:
3 left
💡 Hint
Common Mistakes
Using .copy() creates a separate array, so changes do not affect the original.
Assigning the wrong index or value does not demonstrate shared memory.
5fill in blank
hard

Fill all three blanks to create a view, modify it, and check if the original array changed.

NumPy
import numpy as np
arr = np.array([7, 14, 21, 28])
view_arr = arr[1]
view_arr[0] = [2]
changed = arr[0] == [3]
Drag options to blanks, or click blank then click option'
A.view()
B70
D.copy()
Attempts:
3 left
💡 Hint
Common Mistakes
Using .copy() creates a separate array, so arr[0] does not change.
Assigning a different value than 70 causes the check to fail.

Practice

(1/5)
1. What happens when you modify a NumPy array view?
easy
A. An error occurs because views are read-only
B. Only the view changes, original stays same
C. A new copy of the array is created
D. The original array also changes

Solution

  1. Step 1: Understand what a view is

    A view is a way to look at the same data without copying it.
  2. Step 2: Effect of modifying a view

    Since the view shares memory with the original, changing the view changes the original array too.
  3. Final Answer:

    The original array also changes -> Option D
  4. Quick Check:

    Views share memory = original changes [OK]
Hint: Views share memory; changing view changes original [OK]
Common Mistakes:
  • Thinking views create copies
  • Assuming views are independent
  • Believing views are read-only
2. Which of the following is the explicit way to create a view of a NumPy array a?
easy
A. b = a.view()
B. b = a.copy()
C. b = a[:]
D. b = np.array(a)

Solution

  1. Step 1: Identify methods to create views

    The view() method explicitly creates a view sharing memory with the original array.
  2. Step 2: Check other options

    copy() and np.array() create copies, not views. a[:] creates a view only if a is an ndarray, but view() is the explicit and recommended method.
  3. Final Answer:

    b = a.view() -> Option A
  4. Quick Check:

    Use view() for views [OK]
Hint: Use .view() method to create a view [OK]
Common Mistakes:
  • Using copy() instead of view()
  • Assuming slicing always creates a copy
  • Using np.array() which copies data
3. What is the output of this code?
import numpy as np
x = np.array([1, 2, 3, 4])
y = x[1:3]
y[0] = 10
print(x)
medium
A. [1 2 3 4]
B. [10 2 3 4]
C. [1 10 3 4]
D. [1 2 10 4]

Solution

  1. Step 1: Understand slicing creates a view

    The slice x[1:3] creates a view of elements at index 1 and 2.
  2. Step 2: Modify the view and check original

    Changing y[0] changes x[1] because they share memory. So x becomes [1, 10, 3, 4].
  3. Final Answer:

    [1 10 3 4] -> Option C
  4. Quick Check:

    Slices are views = original changes [OK]
Hint: Slicing creates views; changes reflect in original [OK]
Common Mistakes:
  • Thinking slicing creates a copy
  • Modifying view does not affect original
  • Confusing indices in slice
4. Find the error in this code that tries to create a view and modify it:
import numpy as np
arr = np.array([5, 6, 7, 8])
view_arr = arr.copy()
view_arr[1] = 100
print(arr)
medium
A. copy() creates a view, so arr changes
B. copy() creates a copy, so arr does not change
C. Syntax error in creating view
D. view_arr is read-only, cannot assign

Solution

  1. Step 1: Understand copy() behavior

    copy() creates a new array with its own memory, not a view.
  2. Step 2: Effect of modifying copy

    Changing view_arr[1] does not affect arr because they are separate arrays.
  3. Final Answer:

    copy() creates a copy, so arr does not change -> Option B
  4. Quick Check:

    copy() makes independent array [OK]
Hint: copy() makes independent array, not view [OK]
Common Mistakes:
  • Assuming copy() creates a view
  • Expecting original to change after copy modification
  • Confusing copy() and view()
5. You have a large NumPy array data. You want to modify a small part without copying the whole array to save memory. Which approach is best?
hard
A. Use slicing or view() to get a view and modify it
B. Convert array to list, modify, then back to array
C. Use data.copy() and modify the copy
D. Use np.array(data) to create a new array and modify

Solution

  1. Step 1: Understand memory use in copying vs views

    Copying creates a full new array, using more memory. Views share memory and are efficient.
  2. Step 2: Choose method to modify part without full copy

    Slicing or view() creates a view sharing memory, so modifying it changes original without extra memory.
  3. Final Answer:

    Use slicing or view() to get a view and modify it -> Option A
  4. Quick Check:

    Views save memory and allow modification [OK]
Hint: Use views to modify without copying large arrays [OK]
Common Mistakes:
  • Using copy() wastes memory
  • Converting to list is slow and memory heavy
  • Creating new arrays duplicates data unnecessarily
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard