🔪 Basic Indexing and Slicing
Basic indexing and slicing are the foundation for accessing NumPy arrays! Extract single elements, rows, columns, and sections efficiently.
import numpy as np
# Basic indexing overview
data = np.array([[10, 20, 30, 40],
[50, 60, 70, 80],
[90, 100, 110, 120]])
print(f"Array: \n{data}")
# Single element and slicing
print(f"Element [1, 2]: {data[1, 2]}")
print(f"Row 0: {data[0]}")
print(f"Column 2: {data[:, 2]}")
🎯 Single Element Access
Access individual elements using row and column coordinates.
import numpy as np
matrix = np.array([[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]])
# Single elements
print(f"matrix[0, 0]: {matrix[0, 0]}") # First element
print(f"matrix[1, 2]: {matrix[1, 2]}") # Row 1, Column 2
print(f"matrix[-1, -1]: {matrix[-1, -1]}") # Last element
📏 Row and Column Access
Extract entire rows or columns using the colon :
operator.
import numpy as np
grades = np.array([[85, 92, 78, 88], # Alice
[79, 85, 91, 82], # Bob
[94, 89, 96, 93]]) # Carol
# Row access
print(f"Alice's grades: {grades[0]}")
# Column access
print(f"Math grades: {grades[:, 0]}")
print(f"Science grades: {grades[:, 1]}")
✂️ Basic Slicing
Extract sections using start:end:step
notation.
Basic Slice Patterns
import numpy as np
data = np.array([10, 20, 30, 40, 50, 60, 70, 80])
print(f"Original: {data}")
# Common patterns
print(f"First 4: {data[:4]}") # [10, 20, 30, 40]
print(f"From index 3: {data[3:]}") # [40, 50, 60, 70, 80]
print(f"Middle: {data[2:6]}") # [30, 40, 50, 60]
Step Slicing
import numpy as np
data = np.array([10, 20, 30, 40, 50, 60, 70, 80])
# Step patterns
print(f"Every 2nd: {data[::2]}") # [10, 30, 50, 70]
print(f"Every 3rd: {data[::3]}") # [10, 40, 70]
print(f"Reverse: {data[::-1]}") # [80, 70, 60, 50, 40, 30, 20, 10]
Negative Indices
import numpy as np
data = np.array([10, 20, 30, 40, 50, 60, 70, 80])
# Negative indexing
print(f"Last 3: {data[-3:]}") # [60, 70, 80]
print(f"All but last 2: {data[:-2]}") # [10, 20, 30, 40, 50, 60]
🎯 2D Array Slicing
Two-dimensional slicing: array[row_slice, column_slice]
.
Row Slicing
import numpy as np
matrix = np.array([[10, 20, 30, 40],
[50, 60, 70, 80],
[90, 100, 110, 120],
[130, 140, 150, 160]])
# Row slicing
print(f"First 2 rows: \n{matrix[:2]}")
print(f"Last 2 rows: \n{matrix[-2:]}")
print(f"Every other row: \n{matrix[::2]}")
Column Slicing
import numpy as np
matrix = np.array([[10, 20, 30, 40],
[50, 60, 70, 80],
[90, 100, 110, 120]])
# Column slicing
print(f"First 2 columns: \n{matrix[:, :2]}")
print(f"Last 2 columns: \n{matrix[:, -2:]}")
print(f"Every other column: \n{matrix[:, ::2]}")
Combined Slicing
import numpy as np
matrix = np.array([[10, 20, 30, 40, 50],
[60, 70, 80, 90, 100],
[110, 120, 130, 140, 150],
[160, 170, 180, 190, 200]])
# Combined row and column slicing
print(f"Center 2x2: \n{matrix[1:3, 1:3]}")
print(f"Corners: \n{matrix[::3, ::4]}")
print(f"Border: \n{matrix[[0, -1]]}[:, [0, -1]]")
🧠 Practice Exercise
import numpy as np
# Sales data: 4 stores, 5 days
sales = np.array([[120, 135, 98, 145, 167],
[98, 112, 156, 134, 143],
[167, 189, 145, 178, 192],
[134, 145, 123, 156, 171]])
stores = ['Store A', 'Store B', 'Store C', 'Store D']
days = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri']
# Access specific data
print(f"Store C Wednesday: {sales[2, 2]}")
print(f"All stores Friday: {sales[:, -1]}")
print(f"Store A all days: {sales[0]}")
print(f"Weekday sales (Mon-Wed): \n{sales[:, :3]}")
🎯 Key Takeaways
🚀 What's Next?
Master basic indexing! Now learn advanced indexing techniques.
Continue to: Advanced Indexing
Was this helpful?
Track Your Learning Progress
Sign in to bookmark tutorials and keep track of your learning journey.
Your progress is saved automatically as you read.