numpy 在对最后n个元素应用函数之后对滑动窗口中的元素求和

ojsjcaue  于 2023-03-30  发布在  其他
关注(0)|答案(1)|浏览(171)

我现在有一个格式化的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.如何在重新制作帧之前将自适应权重函数动态应用于每个“列切片”?

7gcisfzg

7gcisfzg1#

尝试使用rolling。例如,如下所示:

df['a_r'] = df['a'].rolling(4).agg(lambda x: x@awa)

相关问题