Using Numpy for Rolling Window Standard Deviations on 1D Arrays
In numpy, an operation often arises where one needs to calculate a rolling window function over a 1D array. A straightforward approach would be to use a loop, as shown in the given Python code snippet. However, a more efficient method is available through Numpy's强大功能.
The key to performing a rolling window operation in Numpy lies in utilizing the rolling_window function introduced in a blog post. This function reshapes the input array into a series of overlapping windows, effectively creating a 2D array. Applying a function to this 2D array allows for window-based calculations.
To calculate rolling standard deviations, simply apply the numpy.std function to the output of the rolling_window function. The following modified code snippet demonstrates this approach:
import numpy as np # Define the rolling window function def rolling_window(a, window): shape = a.shape[:-1] + (a.shape[-1] - window + 1, window) strides = a.strides + (a.strides[-1],) return np.lib.stride_tricks.as_strided(a, shape=shape, strides=strides) # Input array observations = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # Calculate rolling standard deviations stdev = np.std(rolling_window(observations, 3), 1) # Print the results print(stdev)
This code snippet efficiently calculates the rolling standard deviations for the given 1D array using pure Numpy operations, eliminating the need for loops.
The above is the detailed content of How to Calculate Rolling Window Standard Deviations on 1D Arrays Using Numpy?. For more information, please follow other related articles on the PHP Chinese website!