2016-09-11 72 views
12

在numpy.sum()中有一個名爲「keepdims」的參數。它有什麼作用?在numpy.sum()中有一個名爲「keepdims」的參數。它有什麼作用?

正如你可以在這裏看到的文檔中: http://docs.scipy.org/doc/numpy/reference/generated/numpy.sum.html

numpy.sum(a, axis=None, dtype=None, out=None, keepdims=False)[source] 
Sum of array elements over a given axis. 

Parameters: 
... 
keepdims : bool, optional 
    If this is set to True, the axes which are reduced are left in the result as 
    dimensions with size one. With this option, the result will broadcast 
    correctly against the input array. 
... 
+2

你有沒有試過這個例子,有沒有這個參數?在交互式會話中測試應該很容易。 – hpaulj

+0

如果您知道沒有它的「總和」,這個參數是最有意義的。您是否熟悉結果的形狀取決於輸入數組以及軸的選擇? – hpaulj

回答

21

@Ney @hpaulj是正確的,你需要進行試驗,但我懷疑你沒有意識到總和爲某些陣列可能會出現沿着軸線。觀察其閱讀文檔

>>> a 
array([[0, 0, 0], 
     [0, 1, 0], 
     [0, 2, 0], 
     [1, 0, 0], 
     [1, 1, 0]]) 
>>> np.sum(a, keepdims=True) 
array([[6]]) 
>>> np.sum(a, keepdims=False) 
6 
>>> np.sum(a, axis=1, keepdims=True) 
array([[0], 
     [1], 
     [2], 
     [1], 
     [2]]) 
>>> np.sum(a, axis=1, keepdims=False) 
array([0, 1, 2, 1, 2]) 
>>> np.sum(a, axis=0, keepdims=True) 
array([[2, 4, 0]]) 
>>> np.sum(a, axis=0, keepdims=False) 
array([2, 4, 0]) 
以下

你會發現,如果你不指定軸(第一兩個例子),數值結果是一樣的,但keepdims =真返回一個二維數組與數字6,而第二個化身返回了一個標量。 類似地,沿軸1(跨行)求和時,keepdims = True時會再次返回2D數組。 最後一個例子,沿着軸0(向下的列)顯示了一個類似的特性...當keepdims = True時,尺寸保持不變。
研究座標軸及其屬性對於充分理解NumPy處理多維數據的能力至關重要。

相關問題