如何用向量化计算实现<在历史上所有比当前数值高的数值序列中,离当前第N个近的数字到当前的周期数。>

很抱歉,上个问题虽然结果对的,但是不是我的意思, 我自己改了后,发现也太慢。

其实就是下面的这个函数


NEWHBARS=创新高跨度

在历史上所有比当前数值高的数值序列中,离当前第N个近的数字到当前的周期数。

用法︰NEWHBARS(X,N):求高于当日X的第N个x的距离

例如︰NEWHBARS(HIGH,1)求高于当日h的上一个h距离当前的周期数,即,今天的h值创了多少天以来的新高

如果在今天的h之前没有任何h比它高,则随便返回个-1即可,或者更简单点,在今天的h之前100个周期内没有任何h比比它高,就返回-1



举例:x=5 4 4 3
NEWHBARS(x,1)= null 1 2 1
5之前没有值比它大,所以NULL; 左4之前有5比它大,5到左4的距离为1; 右4前面的4和它相等,不算,再往前找到第一个比它大的5,取5到右4的距离为2; 3之前的4符合条件,距离为1
NEWHBARS(x,2)= null null null 3
3前面的4比它大,再往前还是4,左4=右4,不算, 再往前5比左4大,所以取5到3的距离为3。 前面三个计算值按上述逻辑很好计算都是NULL






能不能用完全向量化写法写一下啊?  我自己实现的写法里面是循环太慢了,根本跑不下来。
如果不能实现NEWHBARS(X,N),  实现NEWHBARS(X,N=1)也行,就是只考虑N=1的情况
谢谢!
请先 登录 后评论
  • 0 关注
  • 0 收藏,827 浏览
  • ddbuserex 提出于 2022-07-28 21:26

相似问题