Numpy中的数组变形操作01——reshape() 重塑, flatten()/reval() 扁平化

举报
nineteens 发表于 2021/03/10 17:21:44 2021/03/10
【摘要】 Numpy中的数组变形操作——reshape() 重塑, flatten()/reval() 扁平化

  reshape() 重塑, flatten()/reval() 扁平化

  reshape()——>完成从低维到高维的转换

  flatten()——>完成从高维到低维的转换 同时可以用ravel()实现

  a. 基础用法举例

  import numpy as np

  help(np.ravel)

  ravel(a, order=‘C’)

  Return a contiguous flattened array.

  a : array_like

  Input array. The elements in a are read in the order specified by

  order, and packed as a 1-D array.

  order : {‘C’,‘F’, ‘A’, ‘K’}, optional

  用reshape()创建二维数组arr

  arr=np.arange(1,25.0).reshape((4,-1)) #tips:用-1直接计算另一个参数

  array([[ 1., 2., 3., 4., 5., 6.],

  [ 7., 8., 9., 10., 11., 12.],

  [13., 14., 15., 16., 17., 18.],

  [19., 20., 21., 22., 23., 24.]])

  对其进行进行扁平化(打平):

  arr_=arr.flatten()

  arr_2=arr.ravel()

  array([ 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12., 13.,

  14., 15., 16., 17., 18., 19., 20., 21., 22., 23., 24.])

  b. ravel和flatten的区别

  raval()进行扁平化处理时没有复制原来数组,只在列主序打平时复制了原数组,返回的是一个数组的视图。

  faltten()在所有情况下打平时都复制了原来的数组,分配了新的内存。

  #flatten打平的情况下

  arr_[0] = 50

  print(arr_)

  print(arr)大连人流医院哪家好 http://www.dljzyyb.com/

  array([ 50., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12., 13.,

  14., 15., 16., 17., 18., 19., 20., 21., 22., 23., 24.])

  array([[ 1., 2., 3., 4., 5., 6.],

  [ 7., 8., 9., 10., 11., 12.],

  [13., 14., 15., 16., 17., 18.],

  [19., 20., 21., 22., 23., 24.]])

  flatten()不会影响到原本数组arr

  #ravel打平情况下

  arr_2[0] = 100

  print(arr_2)

  print(arr)

  array([ 100., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12., 13.,

  14., 15., 16., 17., 18., 19., 20., 21., 22., 23., 24.])

  array([[ 100., 2., 3., 4., 5., 6.],

  [ 7., 8., 9., 10., 11., 12.],

  [13., 14., 15., 16., 17., 18.],

  [19., 20., 21., 22., 23., 24.]])

  ravel()会影响到原本数组arr

  尽量使用flatten()函数打平数组。

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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