我现在有一个格式化的dataframe:
a b c e f
2 3 4 5 1
9 8 6 4 6
1 2 2 2 3
9 8 8 9 1
3 6 8 6 2
. . . . .
. . . . .
7 5 4 1 8
我的目标是在滑动窗口中的最后n(4)游戏中应用自适应权重函数。在每个单独的列上。例如:
awa = [0.1, 0.2, 0.3, 0.4])
col a
a5 = sum([2, 9, 1, 9] * awa)
因此第5个元素将等于最后4个元素的和(.2 + 1.8 + .3 + 3.6)=5.9我想在保持原始数据集的同时执行此操作-这意味着5.9计算不会用于下一个元素的AWA计算。
a6 = sum([9, 1, 9, 3] * awa)
a6 = 5
等等......
我最初的做法如下:
1.将dataframe转换为numpy数组
df.to_numpy()
1.使用np.卷积函数或滑动窗口视图
from numpy.lib.stride_tricks import sliding_window_view
np.sum(sliding_window_view(values, window_shape = 4), axis = 1)
np.convolve(mydata,np.ones(4,dtype=int),'valid')
我的问题变成了双重的:
1.如何在列而不是numpy行上使用这些函数?
1.如何在重新制作帧之前将自适应权重函数动态应用于每个“列切片”?
1条答案
按热度按时间7gcisfzg1#
尝试使用
rolling
。例如,如下所示: