Python基礎 - Numpy庫中的np.sum(array,axis=0,1,2...)

首先看一下什麼叫做維度,一個矩陣的維度大家都知道是二維。包含行和列。以下是三維的:

c = np.array([[[0, 1, 2, 3],
               [4, 5, 6, 7]],
              [[1, 2, 3, 4],
               [5, 6, 7, 8]]])

 查看維度:c.ndim = 3,更簡單的,小括號旁有幾個中括號 [ 就是幾維。

print(c.ndim)   # 3
print(c.shape)  # (2, 2, 4)

定位到某個元素時,c[i][j][k],其中 i 表示第一維,j 表示第二維,k 表示第三維。

axis取多少,就表明在哪個維度上求和。

  • axis=None 表示對所有元素求和。
  • axis=0 表示在第1個維度上求和。
  • axis=1 表示在第2個維度上求和。
  • 以此類推…

axis=0,對 i 進行求和,其餘爲結果的索引。求和公式爲:

s[j,k]=\sum_{i=1}^{N}c[i][j][k]

輸出的shape自然也就是去掉 i的,爲(j, k),這裏就是(2,4)

例如s[1,1]=(1+2)=3,結果正確,其餘的可以自己驗算。

print(c.sum(axis=0).shape) # (2, 4)
print(c.sum(axis=0))       # 在第1個維度上求和。
# [[ 1  3  5  7]
#  [ 9 11 13 15]]

axis=1,對 j 進行求和,直接把上面的公式中的 i改爲 j就行了。求和公式爲:

s[i,k]=\sum_{j=1}^{M}c[i][j][k]

輸出的shape等於原來的減去j的,也就是(2,4)

print(c.sum(axis=1).shape)  # (2, 4)
print(c.sum(axis=1))        # 在第2個維度上求和。
# [[ 4  6  8 10]
#  [ 6  8 10 12]]

 axis=2,與上面同理。

print(c.sum(axis=2).shape)  # (2, 2)
print(c.sum(axis=2))        # 在第2個維度上求和。
# [[ 6 22]
#  [10 26]]

對三維數組a來說,axis=(0,1,2)也就等於axis=None,對所有元素進行求和。


參考:

https://blog.csdn.net/Cowry5/article/details/80188056

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章