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

1. 两者的功能

>>> x = np.array([[1, 2], [3, 4]])
>>> x
array([[1, 2],[3, 4]])
>>> x.flatten()
array([1, 2, 3, 4])
>>> x.ravel()
array([1, 2, 3, 4])两者默认均是行序优先
>>> x.flatten('F')
array([1, 3, 2, 4])
>>> x.ravel('F')
array([1, 3, 2, 4])>>> x.reshape(-1)
array([1, 2, 3, 4])
>>> x.T.reshape(-1)
array([1, 3, 2, 4])

2. 两者的区别

>>> x = np.array([[1, 2], [3, 4]])
>>> x.flatten()[1] = 100
>>> x
array([[1, 2],[3, 4]])            # flatten:返回的是拷贝
>>> x.ravel()[1] = 100
>>> x
array([[  1, 100],[  3,   4]])

References

[1] What is the difference between flatten and ravel functions in numpy?

numpy 辨异 (五)—— numpy.ravel() vs numpy.flatten()相关推荐

  1. numpy 辨异(二) —— np.identity()/np.eye()

    import numpy as np; 两者在创建单位矩阵上,并无区别,两者的区别主要在接口上: np.identity(n, dtype=None):只能获取方阵,也即标准意义的单位阵: np.ey ...

  2. numpy 辨异(四)—— np.repeat 与 np.tile

    >> import numpy as np >> help(np.repeat) >> help(np.tile) 二者执行的是均是复制操作: np.repeat: ...

  3. numpy 辨异(三)—— hstack/column_stack,linalg.eig/linalg.eigh

    1. np.hstack np.column_stack >>> np.hstack([np.array([1, 2, 3]), np.array([4, 5, 6])]) arra ...

  4. numpy 辨异(一) —— reshape 与 resize

    0. reshape的参数 reshape的参数严格地说,应该是tuple类型(tuple of ints),似乎不是tuple也成(ints). >>> x = np.random ...

  5. numpy中ravel函数、flatten函数的功能及差异

    numpy中ravel函数.flatten函数的功能及差异 >>> import numpy as np >>> a = np.arange(20).reshape ...

  6. numpy.ravel() vs numpy.flatten()

    numpy.ravel() vs numpy.flatten() 首先声明两者所要实现的功能是一致的(将多维数组降位一维),两者的区别在于返回拷贝(copy)还是返回视图(view),numpy.fl ...

  7. matlab flatten,Numpy中扁平化函数ravel()和flatten()的区别

    在Numpy中经常使用到的操作由扁平化操作,Numpy提供了两个函数进行此操作,他们的功能相同,但在内存上有很大的不同. 先来看这两个函数的使用: from numpy import * a = ar ...

  8. 展平数组(flatten、ravel)--numpy

    1. flatten()函数 1.1 函数功能 返回将输入数组展平成一维的副本数组,生成的新数组是原数组的深层拷贝(copy),两个数组相互独立,对新数组的修改不会影响原数组 1.2 函数语法 nda ...

  9. numpy 数组抽取_清晰易懂的Numpy入门教程

    原标题:清晰易懂的Numpy入门教程 翻译 | 石头 来源 | Machine Learning Plus Numpy是python语言中最基础和最强大的科学计算和数据处理的工具包,如数据分析工具pa ...

最新文章

  1. 物理层与综合布线【笔记】
  2. 一个aov网用邻接矩阵表示_一起看看啥是图论算法-第一期:图的基本表示
  3. AngularJs学习笔记--E2E Testing
  4. Opencv——写入或读取数据到XML或YAML文件
  5. 2014全国计算机二级vfp模拟试题和答案,2014年全国计算机二级考试VF模拟试题
  6. LeetCode 2121. 相同元素的间隔之和(前缀和)
  7. 引发了未经处理的异常:读取访问权限冲突_从零开始学Python:23课-文件读写和异常处理
  8. linux-centos7中lnmp服务器编译安装含systemctl启动service(转)
  9. 西瓜书boosting learning 集成的错误率推导
  10. 2492 上帝造题的七分钟 2
  11. ckplayer ajax,旋风解析
  12. Vector CANape的使用记录
  13. 树突状细胞(DC细胞)特征及应用进展综述
  14. Nginx反向代理跨域访问气象局天气接口
  15. 什么是跨域?以及跨域的解决方案!
  16. 如何快速上手Mac电脑?mac新手教程 Mac电脑新手必看
  17. 世界上最神奇的数字是:142857
  18. Android 腾讯TUIKIT IM即时通信聊天界面语音问题备忘
  19. Strange Printer
  20. 入门学习Nginx代理服务器?就看这篇Nginx进阶学习最佳配置实践指南

热门文章

  1. 报错:Ticket expired while renewing credentials 原因:Hue 集成Kerberos 导致Kerberos Ticket Renewer 起不来
  2. html select 事件 jquery,通过jquery触发select自身的change事件
  3. vue状态管理存取数据_Vue中的数据通信和状态管理
  4. LeetCode 104.二叉树的最大深度(递归)
  5. 删除一个带有文件的文件夹
  6. Flink1.6系列之—数据流编程模型
  7. BZOJ4336: BJOI2015 骑士的旅行
  8. 移植最新版libmemcached到VC++的艰苦历程和经验总结(上)
  9. ECMAScript 6 + Babel
  10. 2017/9/5的学习内容___Python装饰器的应用