from itertools import islice
def window(seq, n=2):
"Returns a sliding window (of width n) over data from the iterable"
" s -> (s0,s1,...s[n-1]), (s1,s2,...,sn), ... "
it = iter(seq)
result = list(islice(it, n))
if len(result) == n:
yield result
for elem in it:
result = result[1:] + [elem]
yield result
from functools import partial
def group_slice(*args, winsize):
yield from zip(*map(partial(window, n=winsize), args))
def group_slice(*args, winsize):
# Slightly clearer version of the above
partial_func = partial(window, n=winsize)
yield from zip(*(partial_func(s) for s in args))
group_slice正在做的是
用给定的值window创建一个分部函数
窗口大小。
将此部分“修改的”window函数应用于
收集发电机。
然后从每个生成器生成每个片。
你是这样用的
x = [1,2,3,4,5,6]
y = [0.5,0.8,0.9,0.5,0.9,0.8]
for x_slice, y_slice in group_slice(x, y, winsize=3):
print(x_slice)
print(y_slice)
你想要的是一种从序列中计算滑动窗口的方法。你知道吗
通过@Daniel DiPaolo修改来自Rolling or sliding window iterator?的解决方案
group_slice
正在做的是用给定的值
window
创建一个分部函数 窗口大小。将此部分“修改的”
window
函数应用于 收集发电机。然后从每个生成器生成每个片。
你是这样用的
它将输出
或者如果你只需要一个小组的名单
相关问题 更多 >
编程相关推荐