NumPy对于轴(axis)和秩(rank)的理解
- 轴(axis):保护数据的维度,数组最外围的维度axis=0
- 矩阵(二维数组)
- 第一轴
(axis=0)
是矩阵的列操作- 第二轴
(axis=1)
是矩阵的行操作- 三维数组
- 第三轴
(axis=2)
为图像矩阵的通道
- 秩(rank):轴的数量,即数组的维度
上面的看不懂不要急,看看例子就会懂了
np.sum(array, axis=None)
函数表示对数组array
进行求和(默认axis=None
),可通过修改参数axis
达到对数组array
不同轴的操作。
eg:np.sum(a2,axis=0)
对数组a2的第一轴(axis=0)
求和
-
对于二维数组
a2(3,4)
a2=np.arange(12).reshape(3,4)
a2
Out:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
np.sum(a2,axis=0)
Out: array([12, 15, 18, 21])
# ps:12=0+4+8, 15=1+5+9, 18=2+6+10, 21=3+7+11
np.sum(a2,axis=1)
Out: array([ 6, 22, 38])
# ps:6=0+1+2+3, 22=4+5+6+7, 38=8+9+10+11
总结一下
- axis=0的结果为(
axis,4) 大小为四的一维数组,值为(0, i) + (1, i) + (2, i) - axis=1的结果为(3,
axis) 大小为三的一维数组,值为(i, 0) + (i, 1) + (i, 2) + (i, 3)
它的秩的值为2(二维数组,共有两个轴) -
对于三维数组
a(2,3,4)
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]],
[[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]]])
np.sum(a,axis=0)
# 对a数组第一轴求和
Out:
array([[12, 14, 16, 18],
[20, 22, 24, 26],
[28, 30, 32, 34]])
# ps:12=0+12,14=1+13,16=2+14,18=3+15
# 20=4+16,...
# 28=8+28, ...
np.sum(a,axis=1)
# 对a数组第二轴求和
Out:
array([[12, 15, 18, 21],
[48, 51, 54, 57]])
# ps:12= 0+ 4+ 8, 15= 1+ 5+ 9, 18= 2+ 6+10, 21= 3+ 7+11
# 48=12+16+20, ...
np.sum(a,axis=2)
Out:
array([[ 6, 22, 38],
[54, 70, 86]])
# ps: 6= 0+ 1+ 2+ 3, 22= 4+ 5+ 6+ 7, 38= 8+ 9+10+11
# 54=12+13+14+15, ...
总结一下
- axis=0的结果为(
axis,3, 4) 三行四列的矩阵,值为(0, i, j) + (1, i, j) - axis=1的结果为(2,
axis,4) 二行四列的矩阵,值为(i, 0, j) + (i, 1, j) + (i, 2, j) - axis=2的结果为(2, 3,
axis) 二行三列的矩阵,值为(i, j, 0) + (i, j, 1) + (i, j, 2) + (i, j, 3)
它的秩的值为3(共有三个轴,维度为三)