import numpy as np
arr = np.array([10, 20, 30, 40, 50, 60, 70, 80])
print("Original Array:\n", arr)
print("\n--- Basic Slicing ---")
print("arr[2:6] ->", arr[2:6])
print("arr[:4] ->", arr[:4])
print("arr[4:] ->", arr[4:])
print("arr[::2] ->", arr[::2])
print("\n--- Integer Indexing ---")
indices = [0, 2, 4, 6]
print("Elements at indices [0, 2, 4, 6] ->", arr[indices])
arr2D = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
print("\n2D Array:\n", arr2D)
print("Element at (0, 2) ->", arr2D[0, 2])
print("Elements at (1, 0) and (2, 2) ->", arr2D[[1, 2], [0, 2]])
print("\n--- Boolean Indexing ---")
print("Elements > 40 ->", arr[arr > 40])
mask = np.array([True, False, True, False, True, False, True, False])
print("Using mask ->", arr[mask])