gpt4 book ai didi

python - 如何调整滑动窗口滑动多远(step)

转载 作者:行者123 更新时间:2023-12-05 03:34:17 24 4
gpt4 key购买 nike

我正在尝试调整窗口在滑动窗口中滑动的距离。我看到SO上有很多关于滑动窗口的帖子,但是,我似乎找不到一篇解释如何调整滑动窗口滑动距离的帖子。我也不一定对分块或只调整窗口大小感兴趣( 12 )。

举个例子,如果我有一个包含六个字符的字符串

seq = 'ATCGAC'

如果我将窗口大小设置为 1,并且我希望窗口每步滑过 2 个字符。我想要以下输出:

预期输出:

['A', 'C', 'A']

再举个例子,如果我有相同的字符串,想设置窗口大小为3,窗口一次滑过3个字符。我想要以下输出:

预期输出:

['ATC', 'GAC']

作为最后一个示例,带有长字符串的窗口大小。滑动窗口大小为 3 并调整幻灯片以一次滑过 6 个字符:

seq = 'ATCGACATCGACATCGAC'

预期输出:

['ATC', 'ATC', 'ATC']

最佳答案

我相信对此有更优雅的解决方案。每当我发现自己使用 range(len(some_iterable)) 时,我都觉得有点脏。

话虽如此,您可以使用一个简单的生成器来实现这一点。

def window(s: str, size: int, slide_amount: int):
str_len = len(s)
for i in range(0, str_len, slide_amount):
# make sure nothing is yielded smaller than
# the desired size
if i + size <= str_len:
yield s[i:i + size]

print([i for i in window('ATCGAC', 1, 2)]) # ['A', 'C', 'A']
print([i for i in window('ATCGAC', 3, 3)]) # ['ATC', 'GAC']
print([i for i in window('ATCGACATCGACATCGAC', 3, 6)]) # ['ATC', 'ATC', 'ATC']

或者作为生成器表达式的函数包装器。

def window(s: str, size: int, slide_amount: int):
return (
s[i:i + size]
for i in range(0, len(s), slide_amount)
if i + size <= len(s)
)

它可以很容易地修改为返回一个 list

def window(s: str, size: int, slide_amount: int):
return [
s[i:i + size]
for i in range(0, len(s), slide_amount)
if i + size <= len(s)
]

关于python - 如何调整滑动窗口滑动多远(step),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70202030/

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