1. 程式人生 > 程式設計 >解決Numpy中sum函式求和結果維度的問題

解決Numpy中sum函式求和結果維度的問題

使用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函式求和結果維度的問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。