matlab中reshape函数_numpy中的reshape函数详解

Python中的numpy数组有一个Reshape方法,我们时常使用,但是目前为止没有对他进行深入的研究。在多维矩阵的情况下,reshape出来的,到底是什么样子的矩阵?所以尝试构造一个3维矩阵,剖析一下reshape的原理。

首先构造一个【5,4,3】的三维矩阵a,具体数值如下图所示

38a851180996cfbf82b12c0373e2d21b.png

然后将其reshape成【5,12】的矩阵,看到底是如何变化的

在reshape中未加order参数时,结果如下图所示

663aef222d510ab4aedcc0a389a976bd.png

可以看出reshape操作是将第二维进行了切割,把4x3的矩阵变成了1x12的矩阵

尝试加入不同order参数,发现不管是A还是C和F,结果都如没加参数是一样的。

如果想把a【0】作为一个整体,不对它进行拆分,也就是将a【1】整体放在a【0】矩阵的右侧,那么整体的shape应该为【4,15】的矩阵,尝试reshape看看

a796d09f663e7089f909f7433b79314e.png

如上图,可以看出,未加任何参数时,会对第三维进行拆分,直至填满矩阵的宽度,而不是我们想要的整体平移。此时尝试更换不同的参数

参数为C时:

8b672c1e0b8bdaa914bf13bc22844102.png

参数为F时:

4bb4b8f69298a9ece63c7f63e3d5671c.png

可以看出,C是维度越靠后,变化越快,换句话说,就是从最后一维开始,按行优先填充为需要的矩阵。如果写出程序的话,应该是下面这样

42b33a04759610c1a0deb14d33ddbe52.png

变换示意图:

d53f65797567709ffeb303e5ba4acf8d.png

参数为F时,维度越靠前,变化越快,从第一维开始,按列优先,填充为需要的矩阵,如果写出程序的话,应该是下面这样

96aca8d763b37df283a6d0990566fc74.png

变换示意图:

4edbdb0a40613827e347fe03534e5aeb.png

上面大概就是reshape的用法,然而并不能满足我的要求,所以还需要更换别的函数进行处理。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值