如何有效地计算向量上两个元素之间的总和

时间:2017-02-09 17:53:55

标签: python vector

我有一个数学问题,有人问我如何有效地将一个向量的几个元素的总和加到python中的程序上。

例如,我们有一个带有n个元素的向量(v)(n = 100000000,n是一个随机实数),我们想要计算v(10)和v(100000)之间以及之后,v之间的总和(8)和v(100)。实际上,我们希望用(A

我没有直接用代码寻找答案。我正在寻找一个数学解释来理解这个问题,这当然是矢量有效微积分的一个基本概念。

2 个答案:

答案 0 :(得分:0)

解决方案是首先计算一个新的向量(w),它是向量v的累积和。所以,如果我们想要v(1)和v(1000)之间的和,答案是w(1000)如果我们想要v(10)和v(1000)之间的和,答案将是w(1000)-w(10-1)。唯一的低计算将是累计总和。

答案 1 :(得分:-1)

最简单的方法是建立一个记忆表:

def sums(L):
    answer = {i:{j:0 for j in range(i,len(L))} for i in range(len(L))}
    for i,num in enumerate(L):
        answer[i][i] = L[i]
        for j in range(i+1, len(L)):
            answer[i][j] = answer[i][j-1] + L[j]

    return answer

然后按如下方式查询表:

table = sums(my_vector)
print(table[8][100])