计算移动范围的Numpy函数/方法?

问题描述 投票:0回答:1

想要在 numpy 中计算移动范围。

使用 Pandas 编写函数,想要简单/快速的方法来返回具有等效值的 numpy 数组。不需要新数组的名称,只需要值。

def get_moving_range(my_series, na_replace_value=None):
        """Returns calculated moving range series object.

        Args:
            my_series (pandas series): Series to derive moving range from.
            na_replace_value (numeric, optional): first value of moving range is nan by default, if different value is desired use this, otherwise leave as None. Defaults to None.
        """
        # rename series to keep it easy
        my_series.name = 'original'
        # convert to DataFrame
        df = my_series.to_frame()
        # create the offset so I can do the Xn - Xn-1 calculation easy
        df['shifted'] = df['original'].shift(1)
        # calculate the moving range values
        df['Moving Range'] = abs(df['original'] - df['shifted'])
        if na_replace_value != None:
                df.fillna(value=na_replace_value, inplace=True) 
        return(df['Moving Range'])
numpy numpy-ndarray numpy-slicing numpy-ufunc
1个回答
0
投票

只需使用

def np_moving_range(array, fill_val = None):
   return np.r_[fill_val, np.diff(array)]
   
© www.soinside.com 2019 - 2024. All rights reserved.