最近学习Python,发现Python的reshape()与matlab的reshape()虽然都可以对数组进行重置,但有本质区别,简要总结,作为学习笔记。
下面分别介绍reshape()在matlab和python中的重置规则,并做简单对比:
1.在matlab中,reshape()按列读取,按先行后列的原则存放,例如:
若将原数组重置为,则可用reshape(a,2,4,2):
另外,当reshape成二维时,只要确定行或列其中一个参数,另一个即可自动计算出,reshape成三维时,需确定其中两个参数。例如:
2.在Python中,reshape()默认的重置规则为按行读取,按“列行维”的顺序存放,即order='C'。order='F':表示按列读取,按“维行列”的顺序存放。
输出如下:
对于将二维数组reshape成三维,可用reshape(p,m,n,order=' ')的形式实现,其中第一个参数表示维度,例如:
输出为:
其中,order='F'时,根据上例可以发现,是按列读取元素,在新的三维数组中,按先维,再行,后列的顺序存放数据。
另外,在Python中,还可用a.reshape(-1,n)或a.reshape(m,-1)来进行运算,-1的意思是对应的维度未知,在运算过程中会根据给出的维度自动求得。例如:
需要注意的是,reshape前后数组中所有元素数目必须一致!