python基础之numpy.reshape详解

这个方法是在不改变数据内容的情况下,改变一个数组的格式,参数及返回值,官网介绍:

a:数组--需要处理的数据

newshape:新的格式--整数或整数数组,如(2,3)表示2行3列,新的形状应该与原来的形状兼容,即行数和列数相乘后等于a中元素的数量

order:

 首先做出翻译:order : 可选范围为{‘C’, ‘F’, ‘A’}。使用索引顺序读取a的元素,并按照索引顺序将元素放到变换后的的数组中。如果不进行order参数的设置,默认参数为C。

(1)“C”指的是用类C写的读/索引顺序的元素,最后一个维度变化最快,第一个维度变化最慢。以二维数组为例,简单来讲就是横着读,横着写,优先读/写一行。

(2)“F”是指用FORTRAN类索引顺序读/写元素,最后一个维度变化最慢,第一个维度变化最快。竖着读,竖着写,优先读/写一列。注意,“C”和“F”选项不考虑底层数组的内存布局,只引用索引的顺序。

(3)“A”选项所生成的数组的效果与原数组a的数据存储方式有关,如果数据是按照FORTRAN存储的话,它的生成效果与”F“相同,否则与“C”相同。这里可能听起来有点模糊,下面会给出示例。

二、示例解释

1、首先随机生成一个4行3列的数组



2、使用reshape,这里有两种使用方法,可以使用np.reshape(r,(-1,1),order='F'),也可以使用r1=r.reshape((-1,1),order='F'),这里我选择使用第二种方法。通过示例可以观察不同的order参数效果。


通过例子可以看出来,F是优先对列信息进行操作,而C是优先行信息操作。如果未对r的格式进行设置,那么我们rashape的时候以“A”的顺序进行order的话,它的效果和“C”相同。

3、我们将r的存储方式进行修改,修改为类Fortan的方式进行存储。并做与第2步类似的操作。


基础操作样例:

1.引入numpy,名称为np 


2.接下来创建一个数组a,可以看到这是一个一维的数组 


3.使用reshape()方法来更改数组的形状,可以看到看数组d成为了一个二维数组


4.通过reshape生成的新数组和原始数组公用一个内存,也就是说,假如更改一个数组的元素,另一个数组也将发生改变 


5.同理还可以得到一个三维数组 


reshape(-1,1)什么意思:

大意是说,数组新的shape属性应该要与原来的配套,如果等于-1的话,那么Numpy会根据剩下的维度计算出数组的另外一个shape属性值。

举例:


也就是说,先前我们不知道z的shape属性是多少,但是想让z变成只有一列,行数不知道多少,通过`z.reshape(-1,1)`,Numpy自动计算出有12行,新的数组shape属性为(16, 1),与原来的(4, 4)配套。


newshape等于-1,列数等于2,行数未知,reshape后的shape等于(8, 2)

同理,只给定行数,newshape等于-1,Numpy也可以自动计算出新数组的列数。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 基础篇NumPy的主要对象是同种元素的多维数组。这是一个所有的元素都是一种类型、通过一个正整数元组索引的元素表格(...
    oyan99阅读 5,198评论 0 18
  • NumPy是Python中关于科学计算的一个类库,在这里简单介绍一下。 来源:https://docs.scipy...
    灰太狼_black阅读 1,260评论 0 5
  • 先决条件 在阅读这个教程之前,你多少需要知道点python。如果你想从新回忆下,请看看Python Tutoria...
    舒map阅读 2,630评论 1 13
  • 专业考题类型管理运行工作负责人一般作业考题内容选项A选项B选项C选项D选项E选项F正确答案 变电单选GYSZ本规程...
    小白兔去钓鱼阅读 9,090评论 0 13
  • 目录: 5.1 pandas 的数据结构介绍 5.1.1 Series 5.1.2 DataFrame 5.1.3...
    凌岸_ing阅读 4,844评论 0 17