python - 数组中连续子序列的总和

标签 python arrays algorithm

给定以下数组:

tab = [80,12,14,5,70,9,26,30,8,12,16,15]

我想计算大小为 4 的所有可能序列的总和,如下所示:

S1=80+12+14+5=111
S2=12+14+5+70 =101
S3=14+5+70+9 =98
....

我已经在 python 上实现了一个简短的程序来执行此操作,但效率不高:

import numpy as np


tab= np.array([80,12,14,5,70,9,26,30,8,12,16,15])
tab_size=tab.size
n=tab_size
s=0
seq_len=5
for i in range (0,n-(seq_len-1),1):
    print("index i ",i)
    for k in range(i+1,(seq_len+i),1):
            print ("index k ", k)
            tab[i]=tab[i]+tab[k]
            s=s+1
print(s)         
tab

结果如下:

array([111, 101,  98, 110, 135,  73,  76,  66,  51,  12,  16,  15])

我注意到每个元素将参与求和运算 4 次,这并不好。 你有什么有效的想法吗?
我想补充一点,序列大小不固定,在这个例子中只是 4。 提前谢谢你

最佳答案

  • 一旦计算出S1,您只需加 70 减去 80 即可得到 S2
  • 计算出S2后,只需加9减12即可得到S3
  • ...

这样,您将避免使用每个元素 4 次。

关于python - 数组中连续子序列的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42132186/

相关文章:

python Pandas : transform dataframe adding grouped columns

javascript - web2py透明标签

python - datetime.strptime 奇怪的行为

javascript - 在循环内连接 html 标签

algorithm - 什么是位移矢量?

Python `bs4.BeautifulSoup.get_text()` - 仅从直接级别获取文本

python 3D numpy 数组时间索引

arrays - 使用 Bash,是否可以将数组存储在字典中

c++ - 存储大量 session 的最有效的数据结构是什么?

vb.net - 将自相交多边形拆分为非自相交多边形