python – 对数组中所有元素的范围内的求和元素

我必须得到一个数组范围的总和.但是,数组范围需要从一个元素移动到另一个元素.例如,如果数组是1,2,3,4,5,6并且如果每两个元素需要添加,那么它应该添加1 2而不是2 3而不是3 4,依此类推.

我试过但没有得到正确的方法.我确信有一种pythonic方式可以做到这一点.

这是我尝试过的

data = np.arange(0,20,.3)
for i in range (0,len(data)):
    for j in range(i,len(data)):
        get_range = data[j:5]
        get_add = get_range.sum()
        print("sum:",get_add) 

我试图在这里添加每5个元素.

最佳答案 有一种numpyic方式来做到这一点.如果输入数据很大,那么它的内存和CPU效率会更高.

import numpy as np

# input array: [1, 2, 3, 4, 5, 6]
data = np.arange(1, 7)

# cumulative sum: [1, 3, 6, 10, 15, 21]
data_cumsum = np.cumsum(data)

# append zero to start: [0, 1, 3, 6, 10, 15, 21]
data_cumsum = np.hstack([0, data_cumsum])

# calculate moving sum
window = 2
moving_sum = data_cumsum[window:] - data_cumsum[:-window]

print(moving_sum)

输出:

[ 3  5  7  9 11]
点赞