gpt4 book ai didi

python - Python 中的滑动窗口方法

转载 作者:太空宇宙 更新时间:2023-11-03 19:01:22 24 4
gpt4 key购买 nike

我有一个数据框 DF,其中有两列 A 和 B,如下所示:

A                    B                  
1 0
3 0
4 0
2 1
6 0
4 1
7 1
8 1
1 0

第一部分:应执行滑动窗口方法,如下所示。我需要计算大小为 3 滑动 1 个位置的滑动窗口中 B 列的平均值。每个窗口的平均值是手动计算的并显示在左侧。

    A:         1    3    4    2    6    4    7    8    1                                          
B:        0    0    0    1    0    1    1    1    0
[0    0    0]                                             0
[0    0    1]    0.33
[0    1    0]                     0.33
[1    0    1]                         0.66
[0    1    1]          0.66
[1    1    1]          1
[1    1    0]           0.66
output:       0   0.33 0.33 0.66  0.66 1 1 1 0.66

第二部分:现在,对于 A 列中的每一行/坐标,包含该坐标的所有窗口都将被考虑,并且应保留最高平均值,从而给出“输出”列中所示的结果。

第二部分详细解释:第一部分是计算滑动窗口3滑动1个位置的均值。第二步是:对于A列中的每个坐标“i”,应评估包含该坐标“i”的所有窗口并保留最高平均分数。例如,在 A 列中,1 仅出现在第一个窗口中,因此 1 的得分为 0(这是第一个窗口的平均值)。类似地,2 出现在第一个和第二个窗口中,因此 2 的分数应该是窗口 1 和窗口 2 的分数中最高的,即 max(0, 0.33333)。同样,3 出现在第一、第二和第三个窗口中,因此 3 的分数是前三个窗口分数的最大值,即 max(0,0.333333,0.3333333)。 4 出现在第二个、第三个和第四个窗口中,因此 4 的分数是这些窗口分数的最大值,即 max(0.333333,0.3333333,0.666667) 等等。

我需要获得如上所示的输出。输出应该是这样的:

A                   B                  Output   
1 0 0
3 0 0.33
4 0 0.33
2 1 0.66
6 0 0.66
4 1 1
7 1 1
8 1 1
1 0 0.66

任何有关 python 的帮助将不胜感激?

最佳答案

对于第一部分,使用numpy:

WS = 3
B = numpy.array([0,0,0,1,0,1,1,1,0])
filt = numpy.ones(WS) / WS
mean = numpy.convolve(B, filt, 'valid')

第二部分:

paddedmean = numpy.zeros(mean.size + 2 * (WS - 1))
paddedmean[WS-1:-(WS-1)] = mean
output = [numpy.max(paddedmean[i:i+WS]) for i in range(mean.size+WS-1)]

但是A是用来做什么的???

关于python - Python 中的滑动窗口方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15976485/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com