我有一个数学问题,有人问我如何有效地将一个向量的几个元素的总和加到python中的程序上。
例如,我们有一个带有n个元素的向量(v)(n = 100000000,n是一个随机实数),我们想要计算v(10)和v(100000)之间以及之后,v之间的总和(8)和v(100)。实际上,我们希望用(A
我没有直接用代码寻找答案。我正在寻找一个数学解释来理解这个问题,这当然是矢量有效微积分的一个基本概念。
答案 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])