import numpy as np source = np.arange(6) basic_slice = source[1:4] advanced_index = source[[1, 2, 3]] isolated_slice = source[1:4].copy() print("source before:") print(source) print() print("basic_slice shares memory:", np.shares_memory(source, basic_slice)) print("advanced_index shares memory:", np.shares_memory(source, advanced_index)) print("isolated_slice shares memory:", np.shares_memory(source, isolated_slice)) print("basic_slice.base is None:", basic_slice.base is None) print("advanced_index.base is None:", advanced_index.base is None) print() basic_slice[0] = 99 advanced_index[1] = 77 isolated_slice[2] = 55 print("source after edits:") print(source) print() print("basic_slice after edit:") print(basic_slice) print() print("advanced_index after edit:") print(advanced_index) print() print("isolated_slice after edit:") print(isolated_slice)