How to Efficiently Calculate Rolling Standard Deviations in NumPy?

Linda Hamilton
Release: 2024-10-27 16:17:02
Original
320 people have browsed it

How to Efficiently Calculate Rolling Standard Deviations in NumPy?

Implementing Rolling Window for 1D Arrays in NumPy

The necessity of efficiently performing rolling window operations on 1D arrays arises frequently in data analysis and manipulation. NumPy, a powerful library for numerical operations, provides a versatile solution for this task.

For instance, consider the task of calculating the rolling standard deviations for a 1D list of values. A basic Python implementation using loops, as given in the question, can be computationally expensive for large datasets.

NumPy-based Solution

To optimize this process, NumPy offers a concise and efficient approach:

<code class="python">import numpy as np

def rolling_std(array, window):
    return np.std(np.lib.stride_tricks.as_strided(array, shape=array.shape[0] - window + 1, strides=(array.strides[0], array.strides[0])), 1)</code>
Copy after login

The rolling_std function takes two arguments: the 1D array and the desired window size window.

NumPy's as_strided function creates a view of the array as if it were divided into overlapping windows, with a stride that allows efficient computation.

The np.std function then computes the standard deviation along the second dimension, effectively performing the rolling operation.

Usage

To calculate the rolling standard deviations for the input array observations, simply call:

<code class="python">stdev = rolling_std(observations, window_size)</code>
Copy after login

This solution is highly performant, eliminates the need for explicit loops, and fully leverages NumPy's capabilities for efficient array manipulation.

The above is the detailed content of How to Efficiently Calculate Rolling Standard Deviations in NumPy?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!