numpy中的reshape函数详解

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

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

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

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

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

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

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

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

参数为C时:

参数为F时:

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

变换示意图:

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

变换示意图:

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

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注

[2;3Rer>