numpy的ravel() 和 flatten()函数

简介

首先声明两者所要实现的功能是一致的(将多维数组降位一维)。这点从两个单词的意也可以看出来,ravel(散开,解开),flatten(变平)。两者的区别在于返回拷贝(copy)还是返回视图(view),numpy.flatten()返回一份拷贝,对拷贝所做的修改不会影响(reflects)原始矩阵,而numpy.ravel()返回的是视图(view,也颇有几分C/C++引用reference的意味),会影响(reflects)原始矩阵。

两者功能

In [14]: x=np.array([[1,2],[3,4]])# flattenh函数和ravel函数在降维时默认是行序优先
In [15]: x.flatten()
Out[15]: array([1, 2, 3, 4])In [17]: x.ravel()
Out[17]: array([1, 2, 3, 4])# 传入'F'参数表示列序优先
In [18]: x.flatten('F')
Out[18]: array([1, 3, 2, 4])In [19]: x.ravel('F')
Out[19]: array([1, 3, 2, 4])#reshape函数当参数只有一个-1时表示将数组降为一维
In [21]: x.reshape(-1)
Out[21]: array([1, 2, 3, 4])
#x.T表示x的转置
In [22]: x.T.reshape(-1)
Out[22]: array([1, 3, 2, 4])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

两者区别

>>> x = np.array([[1, 2], [3, 4]])
>>> x.flatten()[1] = 100
>>> x
array([[1, 2],[3, 4]])
>>> x.ravel()[1] = 100
>>> x
array([[  1, 100],[  3,   4]])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

通过上面的程序可以发现flatten函数返回的是拷贝。

原文链接:numpy 辨异 (五)—— numpy.ravel() vs numpy.flatten()

numpy学习笔记1—ravel() 和 flatten()相关推荐

  1. Numpy学习笔记(下篇)

    目录 Numpy学习笔记(下篇) 一.Numpy数组的合并与分割操作 1.合并操作 2.分割操作 二.Numpy中的矩阵运算 1.Universal Function 2.矩阵运算 3.向量和矩阵运算 ...

  2. numpy 学习笔记

    numpy 学习笔记 导入 numpy 包 import numpy as np 声明 ndarray 的几种方法 方法一,从list中创建 l = [[1,2,3], [4,5,6], [7,8,9 ...

  3. NumPy学习笔记 一

    NumPy学习笔记 一 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.<数学分 ...

  4. numpy学习笔记:np.zeros应用——生成三通道全黑Mask(蒙版)

    numpy学习笔记:np.zeros应用--生成三通道全黑Mask(蒙板) np.zeros官方文档:np.zeros官方文档 下面是一段生成256*256三通道全黑mask的demo import ...

  5. NumPy学习笔记前言

    前言目录 NumPy学习笔记前言 NumPy简介 NumPy学习准备 NumPy中文网 NumPy学习笔记前言 这里主要分享一下我个人学习NumPy的笔记,希望大家多多交流学习,这也是我第一次写CSD ...

  6. 【Numpy学习笔记】

    Numpy学习笔记 1. NumPy的详细教程(官网手册翻译) https://blog.csdn.net/xiaoxiangzi222/article/details/53084336 2. 学习笔 ...

  7. NumPy学习笔记 二

    NumPy学习笔记 二 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.<数学分 ...

  8. 【Numpy学习笔记1】numpy安装、维度、基本运算、改变数据形态

    1.Numpy使用场景 需要批量处理数据的时候 机器学习,人工智能这些需要进行海量数据运算处理的地方 写游戏里面的物体运行逻辑时,经常涉及到矩阵.向量运算 机器人模拟环境,背后的环境反馈信息,全是靠批 ...

  9. 最简易上手的numpy学习笔记三

    1 数组的复制 2 改变数组的维度 改变这些数组的维度,包含提高数组的维度和降低数组的维度,还包括数组的转置. 通过reshape方法可以将一维数组变成二维.三维或者多维数组.通过ravel方法或fl ...

  10. numpy学习笔记(莫烦python)

    import numpy as np numpy属性 array = np.array([[1,2,3],[2,3,4]]) print(array) print('number of dim',ar ...

最新文章

  1. ios超级签名_ios超级签名何以固若金汤?原因在这里
  2. 【Oracle】查找每期数据都存在的产品
  3. 【原创】SSRS (SQL Serve Reporting Service) 访问权限的问题
  4. mysql主从克隆服务器_mysql主从复制服务器配置
  5. SAP Spartacus list item点击之后的detail页面跳转
  6. php echo 大括号,PHP中echo输出中存在括号()的处理
  7. android 代码 华为 os,Android | 带你零代码实现安卓扫码功能
  8. 【linux高级程序设计】(第十一章)System V进程间通信 4
  9. Caused by: org.hibernate.HibernateException: unknown Oracle major version [0]
  10. 中国游戏发展史V-02
  11. java设计模式,百度网盘
  12. 如何快速出机械工程图
  13. mysql静默安装_mysql5.7静默安装
  14. 【22】像素分辨率像元的计算及含义
  15. 正则匹配0-999区间数字
  16. 蓝桥杯真题——第39级台阶
  17. excel表格公式出现#REF是什么意思
  18. STORJ 有实际应用
  19. 孙子定理c语言程序,中国剩余定理(孙子定理)的证明和c++求解
  20. 英语学习(十)疑问句及否定句

热门文章

  1. cgb2106-day12
  2. python对律师的作用_一场官司中律师的作用有多大?
  3. Could not find a price list in Ordered UOM xxx and Primary UOM of the item
  4. 利用单片机给直流升压
  5. Fite-C02-1班成员学习进度记录
  6. hdu 4484 Hailstone HOTPO
  7. linux中IGV的运行,科学网—使用UCSC和IGV查看reads在基因组上分布情况 - 熊朝亮的博文...
  8. 使用微擎后台授权须知
  9. system32下 exe文件作用
  10. java target文件夹_Maven不会创建“/ target / m2e-wtp / web-resources”文件夹