import numpy as np

def fwdshift(day, x):
    """
    Python implementation of the MATLAB fwdshift function.
    Shifts data forward by the specified number of days.
    
    Parameters:
    day (int): Number of days to shift forward
    x (ndarray): Input array to be shifted
    
    Returns:
    ndarray: Shifted array with NaNs at the end
    """
    assert day >= 0
    
    if isinstance(x, list):
        x = np.array(x)
    
    # Get the shape information
    shape = x.shape
    
    if len(shape) == 1:
        # 1D array case
        y = np.concatenate([x[day:], np.full(day, np.nan)]) if day > 0 else x.copy()
    elif len(shape) == 2:
        # 2D array case (most common for financial data)
        y = np.vstack([x[day:, :], np.full((day, shape[1]), np.nan)]) if day > 0 else x.copy()
    elif len(shape) == 3:
        # 3D array case
        y = np.concatenate([x[day:, :, :], np.full((day, shape[1], shape[2]), np.nan)]) if day > 0 else x.copy()
    else:
        raise ValueError("Input array has too many dimensions")
    
    return y 