Python實現滑動平均(Moving Average)__Python

來源:互聯網
上載者:User

Python中滑動平均演算法(Moving Average)方案:

#!/usr/bin/env python# -*- coding: utf-8 -*-import numpy as np# 等同於MATLAB中的smooth函數,但是平滑視窗必須為奇數。# yy = smooth(y) smooths the data in the column vector y ..# The first few elements of yy are given by# yy(1) = y(1)# yy(2) = (y(1) + y(2) + y(3))/3# yy(3) = (y(1) + y(2) + y(3) + y(4) + y(5))/5# yy(4) = (y(2) + y(3) + y(4) + y(5) + y(6))/5# ...def smooth(a,WSZ):    # a:未經處理資料,NumPy 1-D array containing the data to be smoothed    # 必須是1-D的,如果不是,請使用 np.ravel()或者np.squeeze()轉化     # WSZ: smoothing window size needs, which must be odd number,    # as in the original MATLAB implementation    out0 = np.convolve(a,np.ones(WSZ,dtype=int),'valid')/WSZ    r = np.arange(1,WSZ-1,2)    start = np.cumsum(a[:WSZ-1])[::2]/r    stop = (np.cumsum(a[:-WSZ:-1])[::2]/r)[::-1]    return np.concatenate((  start , out0, stop  ))# another one,邊緣處理的不好"""def movingaverage(data, window_size):    window = np.ones(int(window_size))/float(window_size)    return np.convolve(data, window, 'same')"""# another one,速度更快# 輸出結果 不與未經處理資料等長,假設原資料為m,平滑步長為t,則輸出資料為m-t+1"""def movingaverage(data, window_size):    cumsum_vec = np.cumsum(np.insert(data, 0, 0))     ma_vec = (cumsum_vec[window_size:] - cumsum_vec[:-window_size]) / window_size    return ma_vec"""
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.