移動平均のPython実装
2022-02-13 10:09:13
PythonによるSliding Averageアルゴリズム(Moving Average)スキーム。
#! /usr/bin/env python
# -*- coding: utf-8 -*-
import numpy as np
# Equivalent to the smooth function in MATLAB, but the smoothing window must be odd.
# 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:raw data, NumPy 1-D array containing the data to be smoothed
# must be 1-D, if not, use np.ravel() or np.squeeze() to transform
# 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.range(1,WSZ-1,2)
start = np.cumsum(a[:WSZ-1])[::2]/r
stop = (np.cumsumum(a[:-WSZ:-1])[::2]/r)[::-1]
return np.concatenate(( start , out0, stop ))
# another one, bad edge handling
"""
def movingaverage(data, window_size):
window = np.ones(int(window_size))/float(window_size)
return np.convolve(data, window, 'same')
"""
# another one, faster
# The output result is not equal to the original data, assuming the original data is m and the smoothing step is t, the output data is 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
"""
関連
-
解決済みお客様のCPUは、このTensorFlowバイナリが使用するようにコンパイルされていない命令をサポートしています。AVX AVX2
-
'DataFrame' オブジェクトに 'sort' 属性がありません。
-
Resolve "ImportError: cannot import name 'imresize'"."
-
ModuleNotFoundError: django という名前のモジュールがない 問題1解決済み
-
Python: pyHook-1.5.1-cp37-cp37m-win_amd64.whl はこのプラットフォームでサポートされたホイールではありません。
-
PyChamの「AttributeError:module 'pip' has no attribute 'main'」エラー解決法
-
Python pipを使ったpymysqlモジュールのインストール (Error: ImportError: No module named pymysql)
-
Pythonモジュールの簡単な説明(とても詳しいです!)。
-
Pycharmの未解決の参照問題
-
Python2.7のエンコード問題:UnicodeDecodeError: 'ascii' codec can't decode byte 0xe8 in position... 解決方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
AttributeError: 'mywindow' オブジェクトには 'setCentralWidget' という属性がありません。
-
Python「lxmlを使ったxpathのパース - コナちゃんをクローリングする
-
pythonBug:AttributeError: タイプオブジェクト 'datetime.datetime' は属性 'datetime' を持たない。
-
python で word, excel, csv, json ファイルの読み書きをする。
-
Python Numpyのarrayarrayとmatrixmatrix
-
ImportError: scipy'という名前のモジュールがありません。
-
[Pythonノート】spyderのClearコマンド
-
pythonのstring()モジュール
-
TypeError: 'dict_keys' オブジェクトはインデックス作成をサポートしていません。
-
Pythonです。AttributeError: module 'numpy' has no attribute 'dtype' 問題が解決されました。