首先看一下什么叫做维度,一个矩阵的维度大家都知道是二维。包含行和列。以下是三维的:
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 进行求和,其余为结果的索引。求和公式为:
输出的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就行了。求和公式为:
输出的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,对所有元素进行求和。
参考: