python 踩坑系列

numpy

  • np.full([3,4],0.)是可以直接切片賦值值為小數(shù)的數(shù)組,而np.full(shape=[],0)是不可以賦值小數(shù)的數(shù)組。
  • 歸一化。
def normalization(data):
    minV = data.min(0)
    maxV = data.max(0)
    ranges = maxV - minV
    normData = np.zeros(np.shape(data))
    m = data.shape[0]
    normData = data - np.tile(minV,(m,1))
    normData = normData / np.tile(ranges,(m,1))
    return normData
  • 使用pandas的rolling返回不了兩列數(shù)據(jù)??梢允褂胣umpy stride實現(xiàn)rolling功能。
from numpy.lib.stride_tricks import as_strided as stride
def roll_np(df: pd.DataFrame, apply_func: callable, window: int, return_col_num: int, **kwargs):
    """
    rolling with multiple columns on 2 dim pd.Dataframe
    * the result can apply the function which can return pd.Series with multiple columns
    call apply function with numpy ndarray
    :param return_col_num: 返回的列數(shù)
    :param apply_func:
    :param df:
    :param window
    :param kwargs:
    :return:
    """
    v = df.reset_index().values
    dim0, dim1 = v.shape
    stride0, stride1 = v.strides
    stride_values = stride(v, (dim0 - (window - 1), window, dim1), (stride0, stride0, stride1))
    result_values = np.full((dim0, return_col_num), np.nan)
    for idx, values in enumerate(stride_values, window - 1):
        # values : col 1 is index, other is value
        result_values[idx,] = apply_func(values, **kwargs)
    return result_values
def own_func_np(narr, **kwargs):
    # c = narr[:, 1]
    c = narr[:,1][0]
    d = narr[:,2][-1]
    h = np.max(narr[:,3])
    l = np.min(narr[:,4])
    # d = narr[:, 2]
    return np.array([c,d,h,l])

stride函數(shù)(array,shape,strides)。
enumerate(iteration,start),index從start 開始。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容