【Python学习】 - 关于函数返回拷贝还是返回视图的几组函数汇总
1.np.flatten() 和 np.ravel()
两者的功能是一致的,将多维数组降为一维,但是两者的区别是返回拷贝还是返回视图。
np.flatten()返回一份拷贝,对拷贝所做修改不会影响原始矩阵,而np.ravel()返回的是视图,修改时会影响原始矩阵
使用时推荐np.flatten()
输入:import numpy as np
a = np.array([[1 , 2] , [3 , 4]])
b = a.flatten()
print('b:' , b)
c = a.ravel()
print('c:' , c)
d = a.ravel('F')
print('d:' , d)# 二者的区别
b[0] = 10
print('a:' , a)
c[0] = 10
print('a:' , a)输出:b: [1 2 3 4]
c: [1 2 3 4]
d: [1 3 2 4]
a: [[1 2]
[3 4]]
a: [[10 2]
[ 3 4]]
2.np.array()与np.asarray的区别
其在于输入为数组时,np.array是将重新创建一个数组空间并将数据复制进去,它有自己的一块内存区域,所以随着输入的改变np.array的输出不变(即返回拷贝);而np.asarray功能是将指向数组a的计数器加1,并指向该数组,这样当原始数组改变的时候,np.asarray的输出也会改变(相当于返回视图)。
推荐使用np.array()
输入:import numpy as npa=np.ones((3,3))
b=np.array(a)
c=np.asarray(a)
a[1]=2print('a:\n',a)
print('b:\n',b)
print('c:\n',c)
print(b is a) # False
print(c is a) # True输出:a:[[1. 1. 1.][2. 2. 2.][1. 1. 1.]]
b:[[1. 1. 1.][1. 1. 1.][1. 1. 1.]]
c:[[1. 1. 1.][2. 2. 2.][1. 1. 1.]]
False
True
但是其实如果是这么写的话,两者又是等价的:(因为改变了类型,所以都只能返回一个拷贝)
输入:a=np.ones((3,3))
b=np.array(a,dtype = 'float32')
c=np.asarray(a,dtype = 'float32')
a[1]=2print('a:\n',a)
print('b:\n',b)
print('c:\n',c)
print(b is a) # False
print(c is a) # True输出:a:[[1. 1. 1.][2. 2. 2.][1. 1. 1.]]
b:[[1. 1. 1.][1. 1. 1.][1. 1. 1.]]
c:[[1. 1. 1.][1. 1. 1.][1. 1. 1.]]
False
False
【Python学习】 - 关于函数返回拷贝还是返回视图的几组函数汇总相关推荐
- python学习--关注容易被忽略的知识点--(二)函数
本系列文章回顾了 python大部分关键的知识点,关注那些容易被忽略的知识点.适用于有一定python基础的python学习者. 本系列文章主要参考廖雪峰的python学习网站.该学习网站内容全面,通 ...
- Python学习笔记三之编程练习:循环、迭代器与函数
Python学习笔记三之编程练习 1. 编程第一步 # 求解斐波纳契数列 #/user/bin/python3#Fibonacci series:斐波那契数列 #两个元素的总和确定了下一个数 a,b= ...
- Python学习札记(二十) 函数式编程1 介绍 高阶函数介绍
参考: 函数式编程 高阶函数 Note A.函数式编程(Functional Programming)介绍 1.函数是Python内建支持的一种封装,我们通过一层一层的函数调用把复杂任务分解成简单的任 ...
- Python学习日记(二十七) 反射和几个内置函数
isinstance() 判断isinstance(obj,cls)中obj是否是cls类的对象 class Person:def __init__(self,name):self.name = na ...
- python学习-综合练习(平方根、海伦公式、随机数、转换函数、数值交换)
文章目录 计算平方根 计算三角形的面积 随机数生成 转换 数值交换 说明:本篇博文的知识点大部分来自 Python3 实例 计算平方根 # 导入复数数学模块 import cmathint1 = 16 ...
- Python学习笔记:第十站 水晶球不调用不动
Python学习笔记 文章目录 Python学习笔记 第十站 水晶球不调用不动 1. 函数的创建和调用 2. 函数的参数传递 3. 函数的返回值 4. 函数的参数定义 5. 变量的作用域 6. 递归函 ...
- Python学习整理(之一)
Python 学习整理 数据类型,函数,运算符,bool值,选择结构 Python 学习整理 一,基本的参数类型 二,函数 print()函数 input()函数和int(),float() 三,运算 ...
- 数据库进阶 视图 存储过程(函数)
文章目录 数据库进阶 视图 存储过程(函数) 视图 什么是视图? 视图语法 视图的检查选项 视图的更新 视图作用 存储过程 定义 特点 学习时的代码试练 数据库进阶 视图 存储过程(函数) 视图 什么 ...
- Diango博客--13.将“视图函数”类转化为“类视图”
文章目录 0.思路引导 1.ListView 2.将 index 视图函数改写为类视图 3.将 category 视图函数改写为类视图 4.将 archive 视图函数改写成类视图 5.将 tag 视 ...
最新文章
- 在CentOS 6.9上从源码安装Go 1.10
- python3库_对python3中pathlib库的Path类的使用详解
- 043_集合重要知识点
- An In-Depth Look at the HBase Architecture--转载
- unity如何实现图片透视_如何用nginx实现防盗链?保护网站图片、视频。
- java-HTMLjavaSkcriptCSSjQueryajax
- [转]创建一个JavaScript弹出DIV窗口层的效果
- 网站换服务器需要注意什么问题,网站更换服务器要注意哪些事项
- DotNet微信公众号简介
- 数据结构与算法快慢指针
- 2021年江苏专转本计算机知识点,2021年江苏专转本计算机考试复习知识点归纳内部资料.doc...
- 请千万不要在 JDK 7+ 中使用这个 JSON 包了!切记
- R语言入门mac——RStudio安装➕R包安装【附安装链接】
- 计算机如何更新苹果系统,苹果电脑怎么更新系统升级
- nodejs和前端基于websocket实现微信群聊与私聊
- vsCode好用插件记录
- Docker 网络连通
- 从被遗忘到牛市龙头,一文梳理ETH 2020爆发逻辑
- spring引入多个properties文件
- mysql数据库 排序中文字段_MySQL对中文进行排序的实例
热门文章
- hdu 4324 Triangle LOVE
- [Leetcode][第679题][JAVA][24点游戏][回溯][暴力]
- codeup 1128: 出租车费 贪心|找规律
- next_permutation算法(基于交换)
- 【发现问题】Java中PrintWriter和BufferedWriter的区别
- 条形图坐标轴_解密咨询报告中常见的双层条形图的制作方法
- html5不支持的属性,HTML5 常用语法一览(列举不支持的属性)
- Java设计模式笔记(6)观察者模式
- 51单片机流水灯用c语言,51单片机之流水灯(C语言和汇编两个版本)
- c语言控制数码管显示时间,数码管显示时间整点报时C语言实例