Categories
Python Answers

How to take subarrays from Python numpy array with given stride/step size?

Spread the love

Sometimes, we want to take subarrays from Python numpy array with given stride/step size.

In this article, we’ll look at how to take subarrays from Python numpy array with given stride/step size.

How to take subarrays from Python numpy array with given stride/step size?

To take subarrays from Python numpy array with given stride/step size, we can use the lib.atride_ticks.as_strided method.

For instance, we write:

import numpy as np


def strided_app(a, L, S):
    nrows = ((a.size - L) // S) + 1
    n = a.strides[0]
    return np.lib.stride_tricks.as_strided(a,
                                           shape=(nrows, L),
                                           strides=(S * n, n))


a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
s = strided_app(a, L=5, S=3)
print(s)

We create the strided_app function that takes the array a.

L is the length of the chunk.

And S is the stride or step size.

We compute the number of rows with ((a.size - L) // S) + 1.

Then we get the first chunk with a.strides[0].

And then we call np.lib.stride_tricks.as_strided to compute the chunks with the shape of the nested array and the strides set to the start and end index of the range of items from the original array used to form the chunks in the new array.

Therefore, s is:

[[ 1  2  3  4  5]
 [ 4  5  6  7  8]
 [ 7  8  9 10 11]]

Conclusion

To take subarrays from Python numpy array with given stride/step size, we can use the lib.atride_ticks.as_strided method.

By John Au-Yeung

Web developer specializing in React, Vue, and front end development.

Leave a Reply

Your email address will not be published. Required fields are marked *