3️⃣ 🎯 NumPy Array Access & Manipulation
Estimated reading: 3 minutes 284 views

NumPy Array Slicing – Extracting Subarrays with Ease

Introduction – Why Learn Array Slicing in NumPy?

Array slicing in NumPy is a fundamental technique used to extract subarrays, reverse arrays, modify sections, or perform conditional logic efficiently. It allows you to access parts of an array without creating copies—ensuring memory-efficient operations. Slicing is not only powerful but also forms the foundation for data manipulation in machine learning and numerical analysis.

In this guide, you’ll learn:

  • Syntax and structure of slicing in NumPy
  • How slicing works in 1D, 2D, and 3D arrays
  • Slice with step sizes, negative indexing, and multidimensional slices
  • How slicing differs from indexing
  • Practical use cases and performance tips

Basic Slicing Syntax

The general slicing format is:

array[start:stop:step]
  • start: Starting index (inclusive)
  • stop: Ending index (exclusive)
  • step: Interval between elements (default is 1)

1D Array Slicing

import numpy as np

arr = np.array([10, 20, 30, 40, 50])
print(arr[1:4])    # Slice from index 1 to 3
print(arr[:3])     # From start to index 2
print(arr[::2])    # Every second element

Output:

[20 30 40]  
[10 20 30]  
[10 30 50]

Omitting start or stop uses defaults: start = 0, stop = end


Reverse an Array Using Slicing

reversed_arr = arr[::-1]
print(reversed_arr)

Output:

[50 40 30 20 10]

Negative step values iterate in reverse


2D Array Slicing

matrix = np.array([[1, 2, 3],
                   [4, 5, 6],
                   [7, 8, 9]])

print(matrix[1:, 1:])    # Rows 1+, Cols 1+
print(matrix[:, 0])      # All rows, 1st column

Output:

[[5 6]  
 [8 9]]  
[1 4 7]

Use a comma to separate row and column slices


3D Array Slicing

arr3d = np.arange(27).reshape(3, 3, 3)
print(arr3d[1:, :, :2])  # Slices over 3 axes

Output:

[[[ 9 10]
  [12 13]
  [15 16]]

 [[18 19]
  [21 22]
  [24 25]]]

Shape: (2 blocks, 3 rows, 2 columns)


Modifying Arrays Using Slices

Slicing provides a view—not a copy. Changing a slice updates the original array.

arr = np.array([1, 2, 3, 4, 5])
arr[1:4] = 99
print(arr)

Output:

[ 1 99 99 99  5]

Be cautious—slicing modifies original data unless explicitly copied.


Slicing vs Indexing

OperationBehavior
arr[1]Returns element at index 1
arr[1:2]Returns subarray (slice)
arr[[1]]Returns copy using advanced indexing

Common Mistakes

  • Index out of range in slicing doesn’t raise an error: arr = np.array([1, 2, 3]) print(arr[2:10]) # Safe, returns [3]
  • Misunderstanding negative indices: arr[-2:] # Last 2 elements
  • Forgetting that slicing returns a view:
    Changes to slice reflect on original array

Comparison Table – Slicing Variants

SyntaxDescription
arr[:]All elements
arr[::2]Every second element
arr[::-1]Reversed array
arr[1:4]Elements 1 to 3
matrix[1:, :2]Sub-matrix (rows 1+, cols 0 & 1)

Summary – Key Takeaways

  • Slicing is powerful for extracting subarrays from any dimensional array
  • Syntax: [start:stop:step] works across dimensions
  • Returns a view – modifies original data
  • Use slicing to access, modify, reverse, or segment arrays efficiently

Real-World Applications

  • Image cropping and zooming (matrix slicing)
  • Filtering sensor data ranges
  • Preprocessing ML features by extracting subarrays
  • Time window analysis in time-series datasets

FAQs – NumPy Array Slicing

Does slicing return a view or copy?
View. Changes affect the original array.

What happens if I slice beyond array size?
NumPy returns only the valid range without error.

Can I slice non-contiguous elements?
Yes. Use step:

arr[::2]  # Every other element

Can I chain slices like arr[1:4][::2]?
Yes, but it creates a copy, not a view.

How do I copy a slice safely?
Use .copy():

subset = arr[1:4].copy()

Share Now :
Share

NumPy Array Slicing

Or Copy Link

CONTENTS
Scroll to Top