解決Numpy中sum函式求和結果維度的問題
阿新 • • 發佈:2020-01-09
使用Numpy(下面簡稱np)中的sum函式對某一維度求和時,由於該維度會在求和後變成一個數,所以所得結果的這一維度為空。
比如下面的例子:
a = np.array([[1,2,3],[4,5,6]]) b = np.sum(a,axis=1) print(b.shape) # (2,)
所以,對於一個shape為(2,3)的陣列,在預設情況下使用np.sum函式求和後得到的結果shape是 (2,),如果我們想得到的是(2,1)的shape怎麼辦?比如Ng的深度學習程式設計練習中Course 1 Assignment 4就要求這樣。使用reshape函式當然可以,只是沒有必要,太麻煩了一點不優雅。我們可以使用通過設定keepdims引數實現,還是這個例子:
a = np.array([[1,axis=1,keepdims=True) print(b.shape) # (2,1)
(2,1)和(2,)的shape之間不同參見 What's the difference between (N,) and (N,1) in Numpy? —Stackoverflow
這裡有個小例子可以幫助理解:
a = np.ones((5,)) b = np.ones((5,1)) print(a) # [1. 1. 1. 1. 1.] print(b) # [[1.] # [1.] # [1.] # [1.] # [1.]]
以上這篇解決Numpy中sum函式求和結果維度的問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。