axis=i
,即沿着数组第i
个下标的变化方向进行操作。
这里我们用numpy.sum(axis=i)
进行说明
举例说明:
k = np.reshape(np.arange(24), [3, 2, 4])
print(k)
[[[ 0 1 2 3]
[ 4 5 6 7]]
[[ 8 9 10 11]
[12 13 14 15]]
[[16 17 18 19]
[20 21 22 23]]]
这是一个(3,2,4)维的矩阵,那么对于每个元素,均可用3个下标i,j,k
表示,如:
k[i][j][k]
k[0][0][0]=0
k[0][0][3]=3
k[0][1][0]=4
k[1][0][0]=8
k[2][1][3]=23
# 坐标轴的取值范围
i={0,1,2}
j={0,1}
k={0,1,2,3}
求和操作是降维操作,k
有三个轴,分别按照这三个轴进行求和
axis=0
当axis=0
,即沿着第0个坐标i
下标变化的方向进行求和,第0
轴降维,得到的shape=(2,4)
print(k.sum(axis=0))
print(k.sum(axis=0).shape)
[[24 27 30 33]
[36 39 42 45]]
(2, 4)
下面我们进行手算,沿着第0个坐标遍历求和:
# 沿着第三个坐标 k=0,1,2,3,再沿着第二个坐标j=0,1,共计算8次
# 坐标轴的取值范围
# i={0,1,2}
# j={0,1}
# k={0,1,2,3}
k[0][0][0]+k[1][0][0]+k[2][0][0]=24
k[0][0][1]+k[1][0][1]+k[2][0][1]=27
k[0][0][2]+k[1][0][2]+k[2][0][2]=30
k[0][0][3]+k[1][0][3]+k[2][0][3]=33
k[0][1][0]+k[1][1][0]+k[2][1][0]=36
k[0][1][1]+k[1][1][1]+k[2][1][1]=39
k[0][1][2]+k[1][1][2]+k[2][1][2]=42
k[0][1][3]+k[1][1][3]+k[2][1][3]=45
sum = np.reshape(np.array([24, 27, 30, 33, 36, 39, 42, 45]), (2, 4))
sum = array([[24, 27, 30, 33],
[36, 39, 42, 45]])
axis=1
当axis=1
,即沿着第1个坐标下标j
变化的方向进行求和,第1
轴降维,得到的shape=(3,4)
print(k.sum(axis=1))
print(k.sum(axis=1).shape)
[[ 4 6 8 10]
[20 22 24 26]
[36 38 40 42]]
(3, 4)
这时,我们沿着第1个坐标j
进行手动求和:
# 坐标轴的取值范围
# i={0,1,2}
# j={0,1}
# k={0,1,2,3}
k[0][0][0]+k[0][1][0]=4
k[0][0][1]+k[0][1][1]=6
k[0][0][2]+k[0][1][2]=8
k[0][0][3]+k[0][1][3]=10
k[1][0][0]+k[1][1][0]=20
k[1][0][1]+k[1][1][1]=22
k[1][0][2]+k[1][1][2]=24
k[1][0][3]+k[1][1][3]=26
k[2][0][0]+k[2][1][0]=36
k[2][0][1]+k[2][1][1]=38
k[2][0][2]+k[2][1][2]=40
k[2][0][3]+k[2][1][3]=42
sum = np.reshape(np.array([4, 6, 8, 10, 20, 22, 24, 26, 36, 38, 40, 42]), (3, 4))
sum = array([[ 4, 6, 8, 10],
[20, 22, 24, 26],
[36, 38, 40, 42]])
axis=2
当axis=2
,即沿着第2个坐标下标k
变化的方向进行求和,第2
轴降维,得到的shape=(3,2)
print(k.sum(axis=2))
print(k.sum(axis=2).shape)
[[ 6 22]
[38 54]
[70 86]]
(3, 2)
还是一样的,我们沿着k
坐标的变化进行计算:
# 坐标轴的取值范围
# i={0,1,2}
# j={0,1}
# k={0,1,2,3}
k[0][0][0]+k[0][0][1]+k[0][0][2]+k[0][0][3]=6
k[0][1][0]+k[0][1][1]+k[0][1][2]+k[0][1][3]=22
k[1][0][0]+k[1][0][1]+k[1][0][2]+k[1][0][3]=38
k[1][1][0]+k[1][1][1]+k[1][1][2]+k[1][1][3]=54
k[2][0][0]+k[2][0][1]+k[2][0][2]+k[2][0][3]=70
k[2][1][0]+k[2][1][1]+k[2][1][2]+k[2][1][3]=86
sum = np.reshape(np.array([6, 22, 38, 54, 70, 86]), (3, 2))
sum = array([[ 6, 22],
[38, 54],
[70, 86]])