![](/img/trans.png)
[英]How to calculate the difference between the elements in three lists efficiently?
[英]How to calculate efficiently the sum between two elements on a vector
我有一個數學問題,有人問我如何有效地將向量的幾個元素的總和獲取到 Python 程序中。
例如,我們有一個包含 n 個元素的向量 (v)(n=100000000,n 是一個隨機實數),我們想要計算 v(10) 和 v(100000) 之間以及之后 v(8) 之間的總和和 v(100)。 事實上,我們想要有效地計算兩個元素 A 和 B 之間的元素之和 (A < B)。
我不是在尋找直接使用代碼的答案。 我正在尋找一種數學解釋來理解這個問題,這當然是向量有效微積分中的一個基本概念。
解決方案是首先計算一個新向量 (w),它是向量 v 的累積和。 所以,如果我們想要 v(1) 和 v(1000) 之間的和,答案是 w(1000),如果我們想要 v(10) 和 v(1000) 之間的總和,答案將是 w(1000)-w(10-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])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.