numpy数组切片与转置的可视化
1 数据的准备
import numpy as np
a = np.arange(16).reshape(2,2,4)
可以将元素的索引看成是x,y,z轴的坐标,这里我们写成0,1,2轴,则上述数据可以可视化为
2 切片
沿着0轴切片:
沿着1轴切片:
沿着2轴切片:
3 转置(np.transpose)
3.1 官方文档说明:
可以看到,np.transpose()
可以重新排列数组的维度,体现在图上就是:对数据进行旋转和镜像对称操作,这等价于数据不动坐标轴重新洗牌(详见参考链接)。
3.2 常见的transpose操作(以3维数组为例):
np.transpose(A)
:不传递坐标轴参数,默认即为完全逆序(2,1,0),也就是线性代数中的转置。
绿色操作1:围绕1轴将整个坐标轴按图示方向旋转90度
绿色操作2:将0轴镜像对称到12轴平面上方
这样就完成了0维和2维这两个维度的互换。np.transpose(A, (1,2,0))
:将数据由channel first,转换成channel last;反之则np.transpose(A, (2,0,1))
绿色操作1:围绕1轴将整个坐标轴按图示方向旋转90度
绿色操作2:将12轴平面围绕0轴按图示方向水平旋转90度
这样就完成了相应维度的转换。
注意:简单的np.reshape
并不能完成上述那样维度的重新排列。
可以看到np.reshape()
秉着“多退少补”的策略进行reshape,元素的顺序不会改变。