numpy中的reshape函数详解

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

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

8f1cfb06eacb33eee71ab98ede1fb9b4.png
458f045d1e9770e3fea8d684210d2f33.png


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

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

3a181746677ca7b02f04c0a70a2dd4b0.jpeg
f729a1da608c131cf6691db791ee4caa.jpeg


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

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

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

2c71c702b53e8a1cbd32dd77d3141518.png


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

参数为C时:

08137a174839045a127701bcc7de05a9.png


参数为F时:

5918ce19330d891b115a85e3ec2e6daf.png


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

a456eb26b1aa737952d8b660d4be54b8.jpeg


变换示意图:

2e3bcc72fc53831c57d726f3822a050e.jpeg


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

7f772d4a9b0b42bb55809bcf1d8a7222.jpeg


变换示意图:

6fcbbbb4248ad532c545f20b198ed8ec.jpeg


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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值