python - 不同长度的滚动窗口的总和

标签 python list sum

我正在尝试使用不同长度的滚动窗口从列表的一部分中查找特定的总和。首先,我创建了一个基本的数字列表,然后尝试对生成的一些滚动窗口进行求和。不幸的是,这似乎不可能做到。

foo = []

for x in range (1, 200): 
    foo.append(x)

def subsequences(iterable, length):
    return [iterable[i: i + length] for i in xrange(len(iterable) - length + 1)]

for i in range (1, len(foo)):
    print sum(subsequences(foo, i))

我收到的错误是:

类型错误:+ 不支持的操作数类型:“int”和“list”

有没有办法生成每个子序列并对它们求和?

最佳答案

检查 subsequences() 的输出揭示了问题:您正在尝试将列表序列添加在一起,以获得每个列表中包含的整数值的总和。

print(subsequences(foo, i))
# [[1], [2], [3], [4], [5], [6], [7], [8] ...]

这不是 Python 内置 sum 的设计目的,但如果您使用 Numpy 的 sum,此操作将会起作用:

import numpy as np

# ... 

for i in range (1, len(foo)):
    print (np.sum(subsequences(foo, i)))

输出:

19900
39600
59100
78400
97500
116400
...

或者,您可以在应用 sum 之前提取每个列表中的值,但使用 Numpy 可以让您的代码保持原样,只需添加 np. 即可很好。

关于python - 不同长度的滚动窗口的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47735075/

相关文章:

python - 如何简单地覆盖被替换元素的列表

mysql - 有没有办法在 MySQL 中对两列的乘积求和?

MySQL:当价格< 50时,总和(价格+14)

python - 使用python获取两个日期之间的周数

python - 从另一个 python 文件导入变量

python - 如何检查网上邻居目录中是否存在文件

c# - 如何转换为 List<IEnumerable<XElement>>

python - 根据上一行中的值在时间索引的 Pandas 数据框中删除以下 n 行

python - 将不同大小的嵌套数组与标量相乘

java - 如何根据用户输入计算 ArrayList 的整数和