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学习】 - 关于函数返回拷贝还是返回视图的几组函数汇总相关推荐

  1. python学习--关注容易被忽略的知识点--(二)函数

    本系列文章回顾了 python大部分关键的知识点,关注那些容易被忽略的知识点.适用于有一定python基础的python学习者. 本系列文章主要参考廖雪峰的python学习网站.该学习网站内容全面,通 ...

  2. Python学习笔记三之编程练习:循环、迭代器与函数

    Python学习笔记三之编程练习 1. 编程第一步 # 求解斐波纳契数列 #/user/bin/python3#Fibonacci series:斐波那契数列 #两个元素的总和确定了下一个数 a,b= ...

  3. Python学习札记(二十) 函数式编程1 介绍 高阶函数介绍

    参考: 函数式编程 高阶函数 Note A.函数式编程(Functional Programming)介绍 1.函数是Python内建支持的一种封装,我们通过一层一层的函数调用把复杂任务分解成简单的任 ...

  4. Python学习日记(二十七) 反射和几个内置函数

    isinstance() 判断isinstance(obj,cls)中obj是否是cls类的对象 class Person:def __init__(self,name):self.name = na ...

  5. python学习-综合练习(平方根、海伦公式、随机数、转换函数、数值交换)

    文章目录 计算平方根 计算三角形的面积 随机数生成 转换 数值交换 说明:本篇博文的知识点大部分来自 Python3 实例 计算平方根 # 导入复数数学模块 import cmathint1 = 16 ...

  6. Python学习笔记:第十站 水晶球不调用不动

    Python学习笔记 文章目录 Python学习笔记 第十站 水晶球不调用不动 1. 函数的创建和调用 2. 函数的参数传递 3. 函数的返回值 4. 函数的参数定义 5. 变量的作用域 6. 递归函 ...

  7. Python学习整理(之一)

    Python 学习整理 数据类型,函数,运算符,bool值,选择结构 Python 学习整理 一,基本的参数类型 二,函数 print()函数 input()函数和int(),float() 三,运算 ...

  8. 数据库进阶 视图 存储过程(函数)

    文章目录 数据库进阶 视图 存储过程(函数) 视图 什么是视图? 视图语法 视图的检查选项 视图的更新 视图作用 存储过程 定义 特点 学习时的代码试练 数据库进阶 视图 存储过程(函数) 视图 什么 ...

  9. Diango博客--13.将“视图函数”类转化为“类视图”

    文章目录 0.思路引导 1.ListView 2.将 index 视图函数改写为类视图 3.将 category 视图函数改写为类视图 4.将 archive 视图函数改写成类视图 5.将 tag 视 ...

最新文章

  1. 在CentOS 6.9上从源码安装Go 1.10
  2. python3库_对python3中pathlib库的Path类的使用详解
  3. 043_集合重要知识点
  4. An In-Depth Look at the HBase Architecture--转载
  5. unity如何实现图片透视_如何用nginx实现防盗链?保护网站图片、视频。
  6. java-HTMLjavaSkcriptCSSjQueryajax
  7. [转]创建一个JavaScript弹出DIV窗口层的效果
  8. 网站换服务器需要注意什么问题,网站更换服务器要注意哪些事项
  9. DotNet微信公众号简介
  10. 数据结构与算法快慢指针
  11. 2021年江苏专转本计算机知识点,2021年江苏专转本计算机考试复习知识点归纳内部资料.doc...
  12. 请千万不要在 JDK 7+ 中使用这个 JSON 包了!切记
  13. R语言入门mac——RStudio安装➕R包安装【附安装链接】
  14. 计算机如何更新苹果系统,苹果电脑怎么更新系统升级
  15. nodejs和前端基于websocket实现微信群聊与私聊
  16. vsCode好用插件记录
  17. Docker 网络连通
  18. 从被遗忘到牛市龙头,一文梳理ETH 2020爆发逻辑
  19. spring引入多个properties文件
  20. mysql数据库 排序中文字段_MySQL对中文进行排序的实例

热门文章

  1. hdu 4324 Triangle LOVE
  2. [Leetcode][第679题][JAVA][24点游戏][回溯][暴力]
  3. codeup 1128: 出租车费 贪心|找规律
  4. next_permutation算法(基于交换)
  5. 【发现问题】Java中PrintWriter和BufferedWriter的区别
  6. 条形图坐标轴_解密咨询报告中常见的双层条形图的制作方法
  7. html5不支持的属性,HTML5 常用语法一览(列举不支持的属性)
  8. Java设计模式笔记(6)观察者模式
  9. 51单片机流水灯用c语言,51单片机之流水灯(C语言和汇编两个版本)
  10. c语言控制数码管显示时间,数码管显示时间整点报时C语言实例