簡體   English   中英

Python - 使用 Numpy 操作優化 Lambda

[英]Python - Optimize Lambda with Numpy Operations

我很難優化以下計算;

Inner_diff_grp  = np.var(list(map(lambda x : np.percentile(winw2_grp,x[0]) - np.percentile(winw2_grp,x[1])  ,[(i+7,i) for i in range(0,98,7)])))

'winw2_grp' 是一個小型圖像陣列(比如 5x5)。 我正在遍歷圖像以在每 7 步查找百分位值,然后計算這些值的方差。

循環中的總圖像約為 100,000。 早些時候我使用標准循環,但現在我已將其更改為 Pandas.apply,這似乎表現更好,吞吐量現在約為 150 次迭代/秒 - 這仍然意味着超過 10 分鍾的運行時間。

除了嘗試池化以利用所有 CPU 之外,有沒有辦法優化這個計算?

因此,根據@Ehsan 的建議,我將計算封閉在帶有 numba 裝飾器的單獨 function 中,僅此而已。 我故意刪除了 lambda 因為我想嘗試其他優化(並行執行) - 所以它不是策略的一部分,而是 WIP。

@nb.jit(nopython = True, fastmath=True)
def numba_perc_calc(win):
    arr = [0, 7, 14, 21, 28, 35, 42, 49, 56, 63, 70, 77, 84, 91, 98]
    perc = np.percentile(win,arr)
    dif = np.diff(perc )
    var_of_percs = np.var(dif )
    return var_of_percs

跟蹤較小測試集上的一塊結果。

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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