簡體   English   中英

如何有效地計算向量上兩個元素之間的總和

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM