Numpy中ravel()和flatten()的区别是什么
发表于:2025-02-04 作者:千家信息网编辑
千家信息网最后更新 2025年02月04日,这期内容当中小编将会给大家带来有关Numpy中ravel()和flatten()的区别是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。在Numpy中经常使用到的
千家信息网最后更新 2025年02月04日Numpy中ravel()和flatten()的区别是什么
这期内容当中小编将会给大家带来有关Numpy中ravel()和flatten()的区别是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
在Numpy中经常使用到的操作由扁平化操作,Numpy提供了两个函数进行此操作,他们的功能相同,但在内存上有很大的不同.
先来看这两个函数的使用:
from numpy import * a = arange(12).reshape(3,4)print(a)# [[ 0 1 2 3]# [ 4 5 6 7]# [ 8 9 10 11]]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()返回后的数组的地址并不一样),在使用过程中应该注意避免在修改视图时影响原本的数组.这是什么意思咧,我们通过代码来具体解释:
from numpy import *a = arange(12).reshape(3,4)print(a)# [[ 0 1 2 3]# [ 4 5 6 7]# [ 8 9 10 11]]# 创建一个和a相同内容的数组bb = a.copy()c = a.ravel()d = b.flatten()# 输出c和d数组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数组都是扁平化后的数组,具有相同的内容print(a is c)# Falseprint(b is d)# False# 可以看到以上a,b,c,d是四个不同的对象# 但因为c是a的一种展示方式,虽然他们是不同的对象,但在修改c的时候,a中相应的数也改变了c[1] = 99d[1] = 99print(a)# [[ 0 99 2 3]# [ 4 5 6 7]# [ 8 9 10 11]]print(b)# [[ 0 1 2 3]# [ 4 5 6 7]# [ 8 9 10 11]]print(c)# [ 0 99 2 3 4 5 6 7 8 9 10 11]print(d)# [ 0 99 2 3 4 5 6 7 8 9 10 11]
上述就是小编为大家分享的Numpy中ravel()和flatten()的区别是什么了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。
数组
内容
不同
相同
两个
函数
视图
内存
功能
对象
扁平
时候
过程
分析
合适
很大
恰当
专业
中小
代码
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
魔兽世界晚上不排队的服务器
数据库sql常用字符串函数
铁匠铺服务器
准达OA系统网络安全考试
udp 服务器 客户端
杭州工业软件开发价格
星火云服务器
四川企业软件开发怎么样
铁杆三国多久开一次服务器
水务统计数据库系统
立即断开数据库
特朗普解雇美国网络安全
大厂服务器套路大全集
软件开发财务预算报告模板
dreadhunger服务器前端
查德特里克堡服务器
湖北京古互联网科技有限公司
2690服务器报价
组态软件开发工程
服务器()
活字格服务器多用户激活
switch日版连接国行服务器
易语言edb数据库连接
软件开发一般用啥操作系统
特朗普网络安全顾问输错密码
电脑连接百度服务器
网络安全网站源码
克重数据库查询
csgo捆绑专用服务器失败
美领互联网科技 招聘