我有一個2D numpy數組和一列索引列表,我希望計算numpy數組中相應的一維向量的總和。這可以通過for循環或通過列表理解來輕鬆完成,但我想知道是否可以對其進行矢量化。使用類似的代碼,我可以從矢量化中獲得大約40倍的加速比。向量化各種索引的numpy數組調用
這裏的示例代碼:
import numpy as np
indices = [[1,2],[1,3],[2,0,3],[1]]
array_2d = np.array([[0.5, 1.5],[1.5,2.5],[2.5,3.5],[3.5,4.5]])
soln = [np.sum(array_2d[x], axis=-1) for x in indices]
(編輯):請注意,指數不(X,Y)座標array_2d,代替指數爲[0] = [1,2]表示在第一和第二array_2d中的向量(行)。索引中每個列表的元素數目可以變化。
這就是我希望能夠做到:
vectorized_soln = np.sum(array_2d[indices[:]], axis=-1)
有誰知道是否有實現這一目標的任何方式?
「indices」的最後一個元素應該是「[2]」嗎?其他元素的長度爲2. –
我編輯了這篇文章,並解釋了一些索引代表的內容。最初是的,索引中的元素可以具有可變大小,但是對array_2d中的相應向量執行的操作應該同樣適用(如總和或平均值等),並輸出單個向量。 – irozada