import numpy as np
import pandas as pd
# generate random data
X = pd.Series([(x + 5*np.random.random())%360 for x in range(-100, 600, 15)])
Y = pd.Series([(y + 5*np.random.random())%360 - 180 for y in range(-200, 500, 15)])
# 'unwrap' the angles so there is no wrap around
X1 = pd.Series(np.rad2deg(np.unwrap(np.deg2rad(Y))))
Y1 = pd.Series(np.rad2deg(np.unwrap(np.deg2rad(Y))))
# smooth the data with a moving average
# note: this is pandas 17.1, the api changed for version 18
X2 = pd.rolling_mean(X1, window=3)
Y2 = pd.rolling_mean(Y1, window=3)
# convert back to wrapped data if desired
X3 = X2 % 360
Y3 = (Y2 + 180)%360 - 180
假设你从
要执行循环卷积,可以执行以下操作:
^{pr2}$在每个点,使用前5个点(含5个点)的循环平均值。当然,还有其他的方法。在
这里有一个用熊猫做移动平均线的解决方案。首先
unwrap
数据(需要转换成弧度和弧度),因此没有间断(例如,从180跳到-179)。然后计算移动平均值,最后根据需要转换回包装数据。另外,请使用np.convolve()
查看这个numpy cookbook recipe。在相关问题 更多 >
编程相关推荐