用图生动解释numpy.sum(axis=0/1/2)
1. numpy.sum(axis=0/1/2)对比
1.1 代码结果对比
import numpy
# a.shape=(2,3,4) 2页3行4列 即:2个3行4列的二维矩阵
a = numpy.array([
[[1,2,3,4],
[5,6,7,8],
[9,10,11,12]],
[[11,12,13,14],
[15,16,17,18],
[19,20,21,22]],
])
# axis=0 按页与页之间对应的数字相加
# a.shape=(2,3,4) => page.shape=(3,4)
page = a.sum(axis=0)
# axis=1 按行与行之间对应的数字相加
# a.shape=(2,3,4) => row.shape = (2,4)
row = a.sum(axis=1)
# axis=2按列与列之间对应的数字相加
# a.shape=(2,3,4) => column.shape = (2,3)
column = a.sum(axis=2)
print(page)
print(row)
print(column)
[[12 14 16 18]
[20 22 24 26]
[28 30 32 34]]
[[15 18 21 24]
[45 48 51 54]]
[[10 26 42]
[50 66 82]]
1.2 维度变化对比
a.shape | axis = 0 | axis = 1 | axis = 2 |
---|---|---|---|
(2,3,4) | (3,4) | (2,4) | (2,3) |
我们发现 axis=0/1/2 分别把对应 a.shape 位上的维度数去掉了呀。
2. 用图来解释三维下的axis=0/1/2
2.1 axis=0 按页与页之间对应的数字相加
# axis=0 按页与页之间对应的数字相加
page = a.sum(axis=0)
[[12 14 16 18]
[20 22 24 26]
[28 30 32 34]]
2.2 axis=1 按行与行之间对应的数字相加
# axis=1 按行与行之间对应的数字相加
row = a.sum(axis=1)
[[15 18 21 24]
[45 48 51 54]]
2.3 axis=2 按列与列之间对应的数字相加
# axis=2 按列与列之间对应的数字相加
column = a.sum(axis=2)
[[10 26 42]
[50 66 82]]
看图之后一目了然呀,妈妈再也不用担心我不懂numpy.sum()了!!!