最简单的方式讲明白numpy.reshape()函数

举报
AI浩 发表于 2021/12/23 01:52:07 2021/12/23
【摘要】 reshape() 函数: 这个方法是在不改变数据内容的情况下,改变一个数组的格式,参数如下图: 参数说明: a:输入的数组。 newshape:新格式数组的形状。 order:可选范围为{‘C’, ‘F’, ‘A’}。按照order的顺序读取a的元素,并按照索引顺序将元素放到变换后的的数组中。如果不进行order参数的设置...

reshape() 函数: 这个方法是在不改变数据内容的情况下,改变一个数组的格式,参数如下图:

参数说明:

a:输入的数组。

newshape:新格式数组的形状。

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

参数C:横着读,横着写,优先读/写一行。

参数F:竖着读,竖着写,优先读/写一列。

参数A:所生成的数组的效果与原数组a的数据存储方式有关,如果数据是按照FORTRAN

存储的话,它的生成效果与”F“相同,否则与“C”相同。

返回值:新生成的数组

 

举例1:将一维数组reshape成2×8的二维数组。


  
  1. import numpy as np
  2. a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
  3. a = np.asarray(a)
  4. b = np.reshape(a, (2, 8))
  5. print(b)
  6. #或者这样写
  7. a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
  8. a = np.asarray(a)
  9. b = a.reshape((2, 8))
  10. print(b)

 

两种写法运行一样,运行结果:

[[ 0  1  2  3  4  5  6  7]

 [ 8  9 10 11 12 13 14 15]]

例2:将order设置为F。


  
  1. import numpy as np
  2. a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
  3. a = np.asarray(a)
  4. b = np.reshape(a, (2, 8), order='f')
  5. print(b)
  6. c=np.reshape(b,(4,4),order='f')
  7. print(c)

运行结果:

例3:将order设置为a

第一种情况reshape数组a的时候将order改为c,reshape数组b的时候将order设置为a,代码如下:


  
  1. import numpy as np
  2. a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
  3. a = np.asarray(a)
  4. b = np.reshape(a, (2, 8), order='C')
  5. print(b)
  6. x=np.reshape(b,(4,4),order='a')
  7. print(x)

运行结果:

可以发现,如果数组b是按照C的方式做的reshape,x也是按照C的方式做reshape。

第二种情况reshape数组a的时候将order改为F,reshape数组b的时候将order设置为a,代码如下:


  
  1. import numpy as np
  2. a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
  3. a = np.asarray(a)
  4. b = np.reshape(a, (2, 8), order='F')
  5. print(b)
  6. x=np.reshape(b,(4,4),order='a')
  7. print(x)

运行结果:

可以发现,如果数组b是按照F的方式做的reshape,x也是按照F的方式做reshape。

文章来源: wanghao.blog.csdn.net,作者:AI浩,版权归原作者所有,如需转载,请联系作者。

原文链接:wanghao.blog.csdn.net/article/details/110069305

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。