我在练习机器学习中梯度下降的编程学习中,需要扁平化一个array,我脑子中就出现了ravel()与flatten(),两个扁平化的函数,他们俩的共功能相同,可是到底有什么区别呢。
先看看两个函数的使用:

a=np.arange(12).reshape(3,4)
print(a.ravel())
#[0 1 2 3 4 5 6 7 8 9 10 11]
print(a.flatten())
#[0 1 2 3 4 5 6 7 8 9 10 11]

我们可以看到这两个函数实现的功能一样,但我们在平时使用的时候flatten()更为合适.在使用过程中flatten()分配了新的内存,但ravel()返回的是一个数组的视图.视图是数组的引用(说引用不太恰当,因为原数组和ravel()返回后的数组的地址并不一样),在使用过程中应该注意避免在修改视图时影响原本的数组.这是什么意思咧,我们通过代码来具体解释:

a = arange(12).reshape(3,4)
b=a.copy()
c=a.ravel()
d=a.flatten()
print(c)
#[0 1 2 3 4 5 6 7 8 9 10 11]
print(d)
#[0 1 2 3 4 5 6 7 8 9 10 11]
# 可以看到c和d数组都是扁平化后的数组,具有相同的内容
#但是我们修改c的时候,a中的数也发生了该改变
c[1] = 999999
d[1] = 999999
print(a)
# [[ 0 999999  2  3]
#  [ 4  5  6  7]
#  [ 8  9 10 11]]
print(b)
# [[ 0  1  2  3]
#  [ 4  5  6  7]
#  [ 8  9 10 11]]

综上所述,在实际应用中应尽量使用flatten()函数,这样避免意外的错误.

numpy中ravel()与flatten()的区别相关推荐

  1. numpy 中ravel()和flatten()区别

    将多维数组降位一维),两者的区别在于返回拷贝(copy)还是返回视图(view),numpy.flatten()返回一份拷贝,对拷贝所做的修改不会影响(reflects)原始矩阵,而numpy.rav ...

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

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

  3. 【Python】NumPy 中 ravel() 正确打开方式

    [Python]NumPy 中 ravel() 正确打开方式 最近在看书时,对numpy的ravel()的有些疑惑,书上这样写到"如果结果中的值在原始数组中是连续的,则ravel 不会生成底 ...

  4. Python/numpy之ravel() 与flatten()

    Python/numpy之ravel() 与flatten() ravel() ,flatten()功能相同,都是将数据从多维变为一维,区别在于一个是复制操作,一个是引用操作,类似于= ,copy() ...

  5. 关于numpy中eye和identity的区别详解

    https://www.jb51.net/article/175386.htm np.identity(n, dtype=None) np.eye(N, M=None, k=0, dtype=< ...

  6. 论numpy中matrix 和 array的区别

    论numpy中matrix 和 array的区别 原文:http://blog.csdn.net/vincentlipan/article/details/20717163 数组转换矩阵:  A = ...

  7. Numpy 中 mean() 和 average() 的区别?(average可计算加权平均)

    在Numpy中, mean() 和 average()都有取平均数的意思, 在不考虑加权平均的前提下,两者的输出是一样的 , 如下面的Code : a = np.array([1,2,3,4])pri ...

  8. python中average什么意思_在Python3 numpy中mean和average的区别详解

    mean和average都是计算均值的函数,在不指定权重的时候average和mean是一样的.指定权重后,average可以计算一维的加权平均值. 具体如下: import numpy as np ...

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

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

最新文章

  1. 神经网络:你的大脑是一台计算机吗?
  2. Spark Worker启动源码
  3. C#Redis集合set
  4. c语言 二进制输出_程序员入门C语言,需要掌握的4个基础知识
  5. linux安装多路径报错,linux多路径软件rdac安装方法
  6. elasticsearch 启动、停止及更改密码
  7. sublime text3搭建react native
  8. WSSv3 Technical Articles_Windows SharePoint Services 3.0编码开发工具和技巧(Part 2 of 2)
  9. Swift中文教程(二十二) 泛型
  10. 《例说51单片机(C语言版)(第3版)》一1.7 实时练习
  11. Unity3D 串口连接
  12. 《Mostly Harmless Econometrics 》第二章:选择性偏误与随机实验
  13. golang tomb_古墓丽影》(Tomb Raider)的补丁可改善Linux的游戏性和新游戏
  14. Routeros花生壳域名解析脚本
  15. python怎么用sin_Python math.sin() 方法
  16. 专注要事、把手弄脏、高效优雅是对抗规模化焦虑的好办法--读Getting Real(达成现实)和 Rework(重塑工作)
  17. android中的简单animation(三)accelerate(加速),decelerate(减速),anticipate,overshoot,bounce...
  18. 2016年中国前1000名公众号最新报价
  19. v2订阅一键同步自定义混淆
  20. Excel 2010 里怎么不显示空单元格中的数字0

热门文章

  1. vue整合百度地图(关键字检索)
  2. 窗口无故失去焦点解决方案
  3. 导入maven项目,报错Cannot read lifecycle mapping metadata for artifact org.apache.maven.plugins:mav
  4. css级联样式表_CSS –级联样式表| 第三部分
  5. 区块链:Casper 机制的历史起源:第一篇
  6. python绘制同心圆代码_使用Python+turtle绘制同心圆
  7. 福禄克DTX-1800与 DSX 系列(DSX-5000、DSX-8000)有什么区别?
  8. 18天精读掌握《费曼物理学讲义卷一》 第4天 2019.6.17
  9. CentOS下连VisualSVN服务器时报Key usage violation错误的解决方案
  10. 【大学物理·恒定电流的磁场】毕奥-萨伐尔定律