1. Numpy中对于3维数组的表达形式不同于RGB图片在通道上的堆叠形式
0. 设一个矩阵尺寸为: h * w * c
1. Numpy 会将该矩阵的后两维看成一个二维矩阵,h则代表w*c大小的矩阵的个数,整体矩阵是w*c矩阵在h维度上的堆叠
2. 图像上会将该矩阵的前两个维度看成是图片的宽和高,而c代表通道数,即c代表h*w尺寸矩阵的个数,整体矩阵是h*w矩阵在c维度上的堆叠
2. Numpy和图像中对矩阵的看待方式不同也就造成了max、argmax当指定axis时比较的方式不同
0. 这里的max、argmax是Numpy中的函数, 因此其看待矩阵的方式是按照Numpy的方式来看待的,下面以max函数为例,argmax和max寻找数的方式是一致的
1. 当axis=0的时候,相当于在维度为0的上面找最大值,即在h的维度上找最大值,因为Numpy认为矩阵是w*c矩阵在h维度上的堆叠,因此其会将ans[i][j] = max(a[0][i][j], a[1][i][j], a[2][i][j], ... a[h - 1][i][j]),结果矩阵ans的大小为 w * c
2. 当axis=1的时候,相当于在维度为1的上面找最大值,即在w的维度上找最大值,因为Numpy认为矩阵是w*c矩阵在h维度上的堆叠,因此其会将ans[i][j] = max(a[i][0][j], a[i][1][j], a[i][2][j], ... a[i][w - 1][j]),结果矩阵ans的大小为 h * c
3. 当axis=2的时候,相当于在维度为2的上面找最大值,即在c的维度上找最大值,因为Numpy认为矩阵是w*c矩阵在h维度上的堆叠,因此其会将ans[i][j] = max(a[i][j][0], a[i][j][1], a[i][j][2], ... a[i][j][c - 1]),结果矩阵ans的大小为h * w
3. 其实只是看待矩阵的方式不同,导致了处理结果的显示方式不同,因此可以坐标系的转换更好的理解这两个函数