How to Get a Subarray of an Array in Python

Vaibhav Vaibhav Feb 12, 2024
  1. Use Slicing to Get a Subarray of an Array in Python
  2. Use the numpy Library to Get Python Subarray
  3. Use List Comprehension to Get a Subarray of an Array in Python
  4. Use the filter Function to Get a Subarray of an Array in Python
  5. Use NumPy’s arange Function to Get a Subarray of an Array in Python
How to Get a Subarray of an Array in Python

A contiguous part of an array is a subarray, and a contiguous part of a string is a substring. The order of elements remains the same relative to the original list or string for both of them.

Working with arrays is an essential aspect of programming, and at times, you may have to extract a subset of elements from an array. In Python, this process is commonly referred to as obtaining a subarray.

Python makes obtaining a subarray or a substring very straightforward compared to most of the other programming languages. In this article, we will learn how to obtain a subarray of an array in Python.

Use Slicing to Get a Subarray of an Array in Python

Slicing is a powerful and concise way to obtain subarrays in Python. It involves specifying the start and end indices within square brackets.

In Python, we can get a subarray of an array using slicing. Extending indexing, which is an easy and convenient notation, can be used to slice an array or a string.

It has the following syntax:

object[start:end:step]

The following is the explanation of each component:

  • object: A list or a string.
  • start: The starting index for slicing. The default value is 0.
  • end: The ending index for slicing. Note that the value of this index is not a part of the result. The default value is the iterable object’s length.
  • step: The number of increments between each index in the result. By default, it is 1.

Let us understand how to use this Python feature to get a subarray of an array with the help of some examples.

Example 1:

array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
a = array[1:4]
b = array[0:8]
c = array[6:]
d = array[:5]
print(a)
print(b)
print(c)
print(d)

Output:

python subarray - slicing

As we can see, the output contains all the indexes between the start and the end index (start inclusive and end exclusive). Moreover, when no value is set for the start, the first index is considered by default, and when no value is set for the end, the last value is considered by default.

We can extend this even further and apply slicing to each value of a list. We will make a list of strings and a list of lists and find a substring and a subarray for each string and list using list comprehension and slicing.

List comprehension is an inline syntax for iterating over a list or lists and creating a new list.

Example 2:

a = ["Hello", "World", "Computer", "Science", "GitHub", "StakeOverflow"]
b = [
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
    [1.1, 2.2, 3.3, 4.4, 5.5],
    [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9],
    ["Q", "W", "E", "R", "T", "Y"],
    [True, False, None, None, False, True],
]
x = [element[1:5] for element in a]
y = [element[1:3] for element in b]
print(x)
print(y)

Output:

python subarray - slicing 2

For each string in the list of strings, the above code concatenates characters present at indexes 1, 2, 3, and 4 into a new string and creates a new list of strings.

For the list of lists, it clubs together all the values at indexes 1 and 2 and creates a new list of lists. Furthermore, we store both the new lists in two new variables and print them.

Use the numpy Library to Get Python Subarray

If you are working with multidimensional arrays, the numpy library provides a robust solution. The numpy array allows for more advanced indexing, including the use of arrays as indices.

Example:

import numpy as np

original_array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
subarray = original_array[1:, :2]
print(subarray)

Output:

python subarray - numpy

The original_array[1:, :2] selects rows starting from index 1 and columns up to index 2 (exclusive). The resulting subarray will be array([[4, 5], [7, 8]]).

Use List Comprehension to Get a Subarray of an Array in Python

List comprehension provides a straightforward way to create lists, making it an efficient method to obtain subarrays based on a condition.

Example:

original_array = [1, 2, 3, 4, 5]
subarray = [x for x in original_array if x % 2 == 0]
print(subarray)

Output:

python subarray - list comprehension

The [x for x in original_array if x % 2 == 0] creates a subarray containing only even numbers. The resulting subarray will be [2, 4].

Use the filter Function to Get a Subarray of an Array in Python

The filter function can be employed to create a subarray based on a specified condition. It takes a function and an iterable as arguments.

Example:

original_array = [1, 2, 3, 4, 5]
subarray = list(filter(lambda x: x % 2 == 0, original_array))
print(subarray)

Output:

python subarray - filter

The filter(lambda x: x % 2 == 0, original_array) creates a subarray containing only even numbers. The resulting subarray will be [2, 4].

Use NumPy’s arange Function to Get a Subarray of an Array in Python

NumPy provides the arange function to generate sequences of numbers, which can be used to index elements and obtain subarrays.

Example:

import numpy as np

original_array = np.array([1, 2, 3, 4, 5])
indices = np.arange(1, 4)
subarray = original_array[indices]
print(subarray)

Output:

python subarray - arange

The np.arange(1, 4) generates an array [1, 2, 3], which is then used to index original_array. The resulting subarray will be [2, 3, 4].

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

Related Article - Python Array