问题描述
我有3个相同代码的变体,并且想知道它们是否对速度或内存有正面或负面影响。我为它们计时,发现最后一个最好,因为滚动的持续时间保持不变,因为滚动操作限于数据帧的最后几行。 self._bars
数据帧随着时间而增长。基本上,每次将新记录添加到self._bars
时,我都会为该记录计算3个数字并将它们写在同一行上。
我可以对Code#3进行进一步的改进吗?
CODE#1:
self._bars['ret'] = (np.log(self._bars.close)
- self._bars.close.rolling(f'{self._rollingSec}s').apply(lambda x: np.log(x[0])))
self._bars['meanret'] = self._bars.ret.rolling(f'{self._rollingSecExt}s').mean().ffill()
self._bars['sign'] = np.sign(self._bars.meanret)
CODE#2:
self._bars.loc[self._bars.index[-1],'ret'] = (
np.log(self._bars.close.iloc[-1])
- self._bars.close.rolling(f'{self._rollingSec}s').apply(lambda x: np.log(x[0])).iloc[-1])
self._bars.loc[self._bars.index[-1],'meanret'] = (
self._bars.ret.rolling(f'{self._rollingSecExt}s').mean().ffill().iloc[-1])
self._bars.loc[self._bars.index[-1],'sign'] = (
np.sign(self._bars.meanret.iloc[-1]))
CODE#3:
self._bars.loc[self._bars.index[-1],'ret'] = (
np.log(self._bars.close.iloc[-1])
- self._bars.close.iloc[-self._rollingWindow:].rolling(f'{self._rollingSec}s').apply(lambda x: np.log(x[0])).iloc[-1])
self._bars.loc[self._bars.index[-1],'meanret'] = (
self._bars.ret.iloc[-self._rollingWindow:].rolling(f'{self._rollingSecExt}s').mean().ffill().iloc[-1])
self._bars.loc[self._bars.index[-1],'sign'] = (
np.sign(self._bars.meanret.iloc[-1]))
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)