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

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