We use 2D array indexing to find or change values in a table-like structure by pointing to its row and column.
2D array indexing (row, col) in NumPy
import numpy as np # Create a 2D array array_2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # Access element at row i, column j value = array_2d[i, j] # Change element at row i, column j array_2d[i, j] = new_value
Rows and columns start counting from 0, so the first row is 0, the first column is 0.
Use comma inside the square brackets to separate row and column indices.
import numpy as np array_2d = np.array([[10, 20, 30], [40, 50, 60], [70, 80, 90]]) # Access element at first row, first column print(array_2d[0, 0]) # Output: 10
import numpy as np array_2d = np.array([[5]]) # Access the only element in a 1x1 array print(array_2d[0, 0]) # Output: 5
import numpy as np array_2d = np.array([]).reshape(0, 0) # Trying to access element in empty array will cause error # print(array_2d[0, 0]) # This will raise IndexError
import numpy as np array_2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # Change element at last row, last column array_2d[2, 2] = 99 print(array_2d)
This program creates a 3x3 array, prints it, accesses one element, then changes another element and prints the updated array.
import numpy as np # Create a 3x3 2D array array_2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) print("Original array:") print(array_2d) # Access element at row 1, column 2 value = array_2d[1, 2] print(f"Value at row 1, column 2: {value}") # Change element at row 0, column 1 array_2d[0, 1] = 20 print("Array after changing element at row 0, column 1 to 20:") print(array_2d)
Time complexity for accessing or changing one element is O(1) - very fast.
Space complexity depends on the array size, but indexing itself uses no extra space.
Common mistake: forgetting that indexing starts at 0, so row 1 is actually the second row.
Use 2D indexing when you want to work with specific cells; use slicing if you want whole rows or columns.
2D array indexing uses [row, column] to find or change values.
Rows and columns start at 0, so count carefully.
Accessing or changing one element is very fast and simple.
Practice
arr[2, 1] mean when arr is a 2D numpy array?Solution
Step 1: Understand zero-based indexing
In numpy, counting starts at 0, so index 2 means the 3rd row, and index 1 means the 2nd column.Step 2: Interpret the indexing
arr[2, 1]accesses the element at row 3, column 2.Final Answer:
Access the element in the 3rd row and 2nd column -> Option AQuick Check:
Row 2, Col 1 means 3rd row, 2nd column [OK]
- Confusing row and column order
- Starting count from 1 instead of 0
- Thinking arr[2,1] returns a row or column
arr?Solution
Step 1: Recall zero-based indexing
The 1st row is index 0, and the 3rd column is index 2.Step 2: Match indexes to syntax
So,arr[0, 2]accesses the element in the 1st row and 3rd column.Final Answer:
arr[0, 2] -> Option BQuick Check:
Row 0, Col 2 = 1st row, 3rd column [OK]
- Using 1-based indexes like arr[1,3]
- Swapping row and column indexes
- Using parentheses instead of brackets
import numpy as np arr = np.array([[5, 10, 15], [20, 25, 30], [35, 40, 45]]) print(arr[1, 2])
What is the output?
Solution
Step 1: Identify the element at row 1, column 2
Row 1 is the second row: [20, 25, 30]. Column 2 is the third element in that row, which is 30.Step 2: Confirm the printed value
The code printsarr[1, 2], so the output is 30.Final Answer:
30 -> Option AQuick Check:
arr[1,2] = 30 [OK]
- Choosing element from wrong row or column
- Confusing zero-based indexing
- Reading the array incorrectly
import numpy as np arr = np.array([[1, 2], [3, 4]]) print(arr[2, 0])
Solution
Step 1: Check array shape and indexes
The array has 2 rows (index 0 and 1). Index 2 for row is out of range.Step 2: Understand error type
Accessingarr[2, 0]causes an IndexError because row 2 does not exist.Final Answer:
IndexError because row 2 does not exist -> Option CQuick Check:
Row index 2 is invalid for 2-row array [OK]
- Assuming indexing starts at 1
- Ignoring array shape
- Confusing error types
arr filled with numbers 1 to 16 in row-major order. Which code correctly changes the element in the last row and second column to 100?Solution
Step 1: Identify last row and second column indexes
For a 4x4 array, rows and columns are indexed 0 to 3. Last row is index 3, second column is index 1.Step 2: Check each option
arr[3, 1] = 100 usesarr[3, 1]which is correct. arr[4, 2] = 100 uses invalid index 4. arr[-1, 2] = 100 uses column index 2 (third column), not second. arr[3, -2] = 100 uses negative index -2 for column which is the third column, not second.Final Answer:
arr[3, 1] = 100 -> Option DQuick Check:
Last row = 3, second column = 1 [OK]
- Using out-of-range indexes like 4
- Confusing negative indexes for columns
- Mixing row and column positions
Ready to prove it?
Pass the test and this pattern moves unknown
