Numpy在三维矩阵的max()、argmax()上的操作

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. 其实只是看待矩阵的方式不同,导致了处理结果的显示方式不同,因此可以坐标系的转换更好的理解这两个函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值