Indexing and Slicing Arrays
Indexing 1D arrays
1d
import numpy as np
arr = np.array([10, 20, 30, 40, 50])
print(arr[0]) # 10
print(arr[3]) # 40
print(arr[-1]) # 501d
import numpy as np
arr = np.array([10, 20, 30, 40, 50])
print(arr[0]) # 10
print(arr[3]) # 40
print(arr[-1]) # 50Slicing 1D arrays
Slicing uses start:stop:stepstart:stop:step (stop is excluded).
slice
import numpy as np
arr = np.array([10, 20, 30, 40, 50])
print(arr[1:4]) # [20 30 40]
print(arr[:3]) # [10 20 30]
print(arr[::2]) # [10 30 50]
print(arr[::-1]) # reverseslice
import numpy as np
arr = np.array([10, 20, 30, 40, 50])
print(arr[1:4]) # [20 30 40]
print(arr[:3]) # [10 20 30]
print(arr[::2]) # [10 30 50]
print(arr[::-1]) # reverseIndexing 2D arrays (rows/columns)
2d
import numpy as np
mat = np.array([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
])
print(mat[0, 0]) # 1
print(mat[1, 2]) # 6
print(mat[2, :]) # full row
print(mat[:, 1]) # full column2d
import numpy as np
mat = np.array([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
])
print(mat[0, 0]) # 1
print(mat[1, 2]) # 6
print(mat[2, :]) # full row
print(mat[:, 1]) # full columnSub-arrays (2D slicing)
subarray
import numpy as np
mat = np.array([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
])
# rows 0..1 and cols 1..2
sub = mat[0:2, 1:3]
print(sub)subarray
import numpy as np
mat = np.array([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
])
# rows 0..1 and cols 1..2
sub = mat[0:2, 1:3]
print(sub)Views vs copies (important)
Many slices are views (they share memory).
view
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
sub = arr[1:4] # view
sub[0] = 999
print(arr) # original changedview
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
sub = arr[1:4] # view
sub[0] = 999
print(arr) # original changedTo force a copy:
copy
sub = arr[1:4].copy()copy
sub = arr[1:4].copy()Boolean indexing (masking)
Boolean indexing is extremely useful for analytics filtering.
mask
import numpy as np
arr = np.array([10, 20, 30, 40, 50])
mask = arr > 25
print(mask) # [False False True True True]
print(arr[mask]) # [30 40 50]mask
import numpy as np
arr = np.array([10, 20, 30, 40, 50])
mask = arr > 25
print(mask) # [False False True True True]
print(arr[mask]) # [30 40 50]Combine conditions
Use parentheses and && / ||:
mask2
import numpy as np
arr = np.array([10, 20, 30, 40, 50])
print(arr[(arr >= 20) & (arr <= 40)])mask2
import numpy as np
arr = np.array([10, 20, 30, 40, 50])
print(arr[(arr >= 20) & (arr <= 40)])Fancy indexing
Select multiple specific indices using a list/array:
fancy
import numpy as np
arr = np.array([10, 20, 30, 40, 50])
print(arr[[0, 2, 4]])fancy
import numpy as np
arr = np.array([10, 20, 30, 40, 50])
print(arr[[0, 2, 4]])Next
Continue to: Shape Manipulation & Reshape to learn how to change dimensions safely.
๐งช Try It Yourself
Exercise 1 โ Create a NumPy Array
Exercise 2 โ Array Shape and Reshape
Exercise 3 โ Array Arithmetic
If this helped you, consider buying me a coffee โ
Buy me a coffeeWas this page helpful?
Let us know how we did
