import numpy as np def movingAvg(x, T): """ Python implementation of the MATLAB movingAvg function. Creates a moving average series over T days. Parameters: x (ndarray): Input array for moving average calculation T (int): Number of periods to average over Returns: ndarray: Moving average with NaNs in the beginning """ assert T > 0 if isinstance(x, list): x = np.array(x) # Get dimensions if len(x.shape) == 1: x = x.reshape(-1, 1) rows, cols = x.shape # Initialize the result array mvavg = np.zeros((rows - T + 1, cols)) # Calculate the sum for each position for i in range(T): mvavg += x[i:rows-T+1+i, :] # Divide by T to get the average mvavg = mvavg / T # Add NaNs at the beginning result = np.vstack([np.full((T-1, cols), np.nan), mvavg]) # If original input was a vector, return a vector if cols == 1 and len(x.shape) == 1: result = result.flatten() return result