我找不到性能增強問題的解決方案。如何迭代切片列表?
我有一維數組,我想計算在滑動指數窗總和,這裏有一個例子代碼:
import numpy as np
input = np.linspace(1, 100, 100)
list_of_indices = [[0, 10], [5, 15], [45, 50]] #just an example
output = np.array([input[idx[0]: idx[1]].sum() for idx in list_of_indices])
的output
陣列的計算相比,numpy的向量化內置極爲緩慢在功能上。 在現實生活中我list_of_indices
包含數萬[lower bound, upper bound]
雙,該環形絕對是一款高性能的python腳本的瓶頸。
如何解決這個問題,使用numpy的內部功能:像面具,聰明np.einsum
,或者跟其他的東西嗎? 由於我在HPC領域工作,我也擔心內存消耗。
沒有人有在尊重的性能要求這一問題的答案嗎?
您好,歡迎來到SO!請避免在問題中添加與問題無關的信息。另外請考慮閱讀解釋如何提出好問題的[幫助]。特別是,這個問題似乎更適合於CodeReview站點,而不是SO。 – BartoszKP 2014-12-06 12:59:06
這是很容易誤用numpy和膨脹你的腳本的內存足跡與巨大的數組。至少現在寫的方式,我發現與SO有關的問題。 – 2014-12-06 18:17:03
即使在技術上關於代碼加速,大多數numpy'vectoriztion'問題都是在SO中回答的。 – hpaulj 2014-12-07 08:29:38