numpy数组切片与转置的可视化

1 数据的准备

import numpy as np
a = np.arange(16).reshape(2,2,4)

1268895-20190310181346998-803906701.png

可以将元素的索引看成是x,y,z轴的坐标,这里我们写成0,1,2轴,则上述数据可以可视化为
1268895-20190310181536813-541743831.png

2 切片

沿着0轴切片:
1268895-20190310182641313-1568291259.png

沿着1轴切片:
1268895-20190310182711601-1061171018.png

沿着2轴切片:
1268895-20190310182743599-821035992.png

3 转置(np.transpose)

3.1 官方文档说明:

1268895-20190310183045849-2107213964.png
可以看到,np.transpose()可以重新排列数组的维度,体现在图上就是:对数据进行旋转和镜像对称操作,这等价于数据不动坐标轴重新洗牌(详见参考链接)。

3.2 常见的transpose操作(以3维数组为例):
  • np.transpose(A):不传递坐标轴参数,默认即为完全逆序(2,1,0),也就是线性代数中的转置。
    1268895-20190310184246613-252039645.png
    绿色操作1:围绕1轴将整个坐标轴按图示方向旋转90度
    绿色操作2:将0轴镜像对称到12轴平面上方
    这样就完成了0维和2维这两个维度的互换。
  • np.transpose(A, (1,2,0)):将数据由channel first,转换成channel last;反之则np.transpose(A, (2,0,1))
    1268895-20190310185908990-695477475.png
    绿色操作1:围绕1轴将整个坐标轴按图示方向旋转90度
    绿色操作2:将12轴平面围绕0轴按图示方向水平旋转90度
    这样就完成了相应维度的转换。
    注意:简单的np.reshape并不能完成上述那样维度的重新排列。
    1268895-20190310191243181-1626923764.png
    可以看到np.reshape()秉着“多退少补”的策略进行reshape,元素的顺序不会改变。

参考链接

转载于:https://www.cnblogs.com/MrZJ/p/10506246.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值