numpy中ravel()与flatten()的区别
我在练习机器学习中梯度下降的编程学习中,需要扁平化一个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()的区别相关推荐
- numpy 中ravel()和flatten()区别
将多维数组降位一维),两者的区别在于返回拷贝(copy)还是返回视图(view),numpy.flatten()返回一份拷贝,对拷贝所做的修改不会影响(reflects)原始矩阵,而numpy.rav ...
- numpy中ravel函数、flatten函数的功能及差异
numpy中ravel函数.flatten函数的功能及差异 >>> import numpy as np >>> a = np.arange(20).reshape ...
- 【Python】NumPy 中 ravel() 正确打开方式
[Python]NumPy 中 ravel() 正确打开方式 最近在看书时,对numpy的ravel()的有些疑惑,书上这样写到"如果结果中的值在原始数组中是连续的,则ravel 不会生成底 ...
- Python/numpy之ravel() 与flatten()
Python/numpy之ravel() 与flatten() ravel() ,flatten()功能相同,都是将数据从多维变为一维,区别在于一个是复制操作,一个是引用操作,类似于= ,copy() ...
- 关于numpy中eye和identity的区别详解
https://www.jb51.net/article/175386.htm np.identity(n, dtype=None) np.eye(N, M=None, k=0, dtype=< ...
- 论numpy中matrix 和 array的区别
论numpy中matrix 和 array的区别 原文:http://blog.csdn.net/vincentlipan/article/details/20717163 数组转换矩阵: A = ...
- Numpy 中 mean() 和 average() 的区别?(average可计算加权平均)
在Numpy中, mean() 和 average()都有取平均数的意思, 在不考虑加权平均的前提下,两者的输出是一样的 , 如下面的Code : a = np.array([1,2,3,4])pri ...
- python中average什么意思_在Python3 numpy中mean和average的区别详解
mean和average都是计算均值的函数,在不指定权重的时候average和mean是一样的.指定权重后,average可以计算一维的加权平均值. 具体如下: import numpy as np ...
- matlab flatten,Numpy中扁平化函数ravel()和flatten()的区别
在Numpy中经常使用到的操作由扁平化操作,Numpy提供了两个函数进行此操作,他们的功能相同,但在内存上有很大的不同. 先来看这两个函数的使用: from numpy import * a = ar ...
最新文章
- 神经网络:你的大脑是一台计算机吗?
- Spark Worker启动源码
- C#Redis集合set
- c语言 二进制输出_程序员入门C语言,需要掌握的4个基础知识
- linux安装多路径报错,linux多路径软件rdac安装方法
- elasticsearch 启动、停止及更改密码
- sublime text3搭建react native
- WSSv3 Technical Articles_Windows SharePoint Services 3.0编码开发工具和技巧(Part 2 of 2)
- Swift中文教程(二十二) 泛型
- 《例说51单片机(C语言版)(第3版)》一1.7 实时练习
- Unity3D 串口连接
- 《Mostly Harmless Econometrics 》第二章:选择性偏误与随机实验
- golang tomb_古墓丽影》(Tomb Raider)的补丁可改善Linux的游戏性和新游戏
- Routeros花生壳域名解析脚本
- python怎么用sin_Python math.sin() 方法
- 专注要事、把手弄脏、高效优雅是对抗规模化焦虑的好办法--读Getting Real(达成现实)和 Rework(重塑工作)
- android中的简单animation(三)accelerate(加速),decelerate(减速),anticipate,overshoot,bounce...
- 2016年中国前1000名公众号最新报价
- v2订阅一键同步自定义混淆
- Excel 2010 里怎么不显示空单元格中的数字0
热门文章
- vue整合百度地图(关键字检索)
- 窗口无故失去焦点解决方案
- 导入maven项目,报错Cannot read lifecycle mapping metadata for artifact org.apache.maven.plugins:mav
- css级联样式表_CSS –级联样式表| 第三部分
- 区块链:Casper 机制的历史起源:第一篇
- python绘制同心圆代码_使用Python+turtle绘制同心圆
- 福禄克DTX-1800与 DSX 系列(DSX-5000、DSX-8000)有什么区别?
- 18天精读掌握《费曼物理学讲义卷一》 第4天 2019.6.17
- CentOS下连VisualSVN服务器时报Key usage violation错误的解决方案
- 【大学物理·恒定电流的磁场】毕奥-萨伐尔定律