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,元素的顺序不会改变。

参考链接

posted @ 2019-03-10 18:12  MrZJ  阅读(609)  评论(0编辑  收藏  举报