2014-12-04 61 views
7

out參數在某些numpy函數(例如cumsumcumprod或其他數學函數)中的用途是什麼?numpy函數中參數'out'的實用程序

如果結果很大,是否有助於使用out參數來提高計算時間或內存效率?

This thread給出了一些關於如何使用的信息。但是我想知道,我應該使用,那麼好處是什麼?

+1

您*閱讀*答案?例如。 *「控制'dtype'是使用'out'的一個原因,另一個是通過'重用'一個已經存在的數組來節省內存。」# – jonrsharpe 2014-12-04 12:26:54

+1

@jonrsharpe 是的,我親愛的。但我正在尋找更多的解釋。 – Sounak 2014-12-04 12:38:07

+0

然後*在你的問題中提及*。你從那裏明白了什麼,還有什麼不清楚的呢?在提問時嘗試*具體*。 – jonrsharpe 2014-12-04 12:39:18

回答

6

out參數創建新對象的函數。這通常是你期望的功能:給一些數組並獲得一個新的數據。

但是,想象一下你想連續幾千次調用這個函數。每個函數調用都會創建一個新的數組,這當然需要很多時間。

在這種情況下,您可能想要創建一個輸出數組out並讓該函數用輸出填充數組。處理完數據後,您可以重新使用out並讓函數覆蓋其值。這樣你就不會分配或釋放任何內存,這可以爲你節省很多時間。

+0

'array.cumsum(0,OUT =陣列) array.cumsum(1,OUT =陣列) array.cumsum(2,OUT =陣列) ' 優於 'array.cumsum(0).cumsum (1).cumsum(2)' – Sounak 2014-12-04 15:00:42

+1

我認爲你應該仍然可以做'array.cumsum(0,out = array).cumsum(1,out = array).cumsum(2,out = array)'if你想保持一條線。 – Jaime 2014-12-04 15:18:01