import numpy as np source = np.arange(6) basic_slice = source[1:4] advanced_index = source[[1, 2, 3]] explicit_copy = source[1:4].copy() candidates = { "basic_slice": basic_slice, "advanced_index": advanced_index, "explicit_copy": explicit_copy, } for name, candidate in candidates.items(): print( f"{name}: shares_memory={np.shares_memory(source, candidate)}, " f"base_is_none={candidate.base is None}" ) basic_slice[0] = 99 advanced_index[1] = 77 explicit_copy[2] = 55 print("source after edits:", source) print("basic_slice after edit:", basic_slice) print("advanced_index after edit:", advanced_index) print("explicit_copy after edit:", explicit_copy)