Numpy常用概念-对象的副本和视图、向量化、广播机制
一、引言
在我们操作数组的时候,返回的是新数组还是原数组的链接,我们就需要了解对象副本和视图的区别。
向量化和广播是numpy内部实现的基础。
二、对象副本和视图
我们应该注意到,在操作数组的时候返回的不是视图就是副本。
副本:复制
视图:链接
1.所有的赋值运算不会为此创建副本。把数组a赋值给了数组b,实际上不是为数组a创建副本,b只是调用a的另一种方式。实际上,修改了b数组的第二个元素,a数组的第二个数组也随之被改变。
In []: a = np.array([,,,,]) In []: a
Out[]: array([, , , , ]) In []: b = a In []: b
Out[]: array([, , , , ]) #修改b数组的第二个元素,a数组的第二个元素也随即改变
In []: b[] = In []: a
Out[]: array([, , , , ])
2.切片操作得到的结果也是指向相同的对象。
In []: c = a[:] In []: c
Out[]: array([, ]) In []: c[] = In []: a
Out[]: array([, , , , ])
3.为数组创建副本,使用copy()
In []: a
Out[]: array([, , , , ]) In []: a = np.array([,,,]) In []: d = a.copy() In []: d
Out[]: array([, , , ]) In []: d[] =
#数组d元素的改变并不会影响数组a
In []: a
Out[]: array([, , , ])
三、向量化
有了向量化,编写code时无需使用循环,因为他在内部已经实现了。向量化使得代码更简洁,可读性更强。
数组相乘可以:a * b 而不需要for遍历数组相乘。
四、广播机制
1、广播机制实现了对两个或以上数组的运算或函数处理,即使这些数组的形状或长短不完全相同。
2、广播机制条件(满足其一即可):1.两个数组的每一维等长 2.其中一个数组为一维数组
3、广播机制有两条规则:
1)为确实的维度补上个1.如果这时满足了兼容性条件,就可以使用广播机制了。
2)扩展最小数组,使得它与最大的数组大小相同,以便使用元素级的函数或运算符。
In [17]: a = np.array([1,2,3])
Out[17]: array([1, 2, 3,]) In [18]: b = np.arange(0,9).reshape(3,3) In [19]: b
Out[19]:
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]]) #假定为数组a用已有的值进行了填充
#array([[1, 2, 3,],
# [1, 2, 3,],
# [1, 2, 3,]])
In [20]: a+b
Out[20]:
array([[1, 3, 5],
[4, 6, 8],
[7, 9, 11]])
假定(一维数组)使用了原有的值填充,使得与另一个数组维度相同,他们的值就可以相加了。
即使更复杂的数组,两个数组形状不同、维度不同、互有长短。也仍然相互兼容,因此广播规则仍然适用。
In [21]: m = np.arange(6).reshape(3,1,2) In [22]: n = np.arange(6).reshape(3,2,1) In [23]: m
Out[23]:
array([[[0, 1]], [[2, 3]], [[4, 5]]]) In [24]: n
Out[24]:
array([[[0],
[1]], [[2],
[3]], [[4],
[5]]]) In [26]: m + n
Out[26]:
array([[[ 0, 1],
[ 1, 2]], [[ 4, 5],
[ 5, 6]], [[ 8, 9],
[ 9, 10]]])
Numpy常用概念-对象的副本和视图、向量化、广播机制的更多相关文章
- NumPy 副本和视图
NumPy 副本和视图 副本是一个数据的完整的拷贝,如果我们对副本进行修改,它不会影响到原始数据,物理内存不在同一位置. 视图是数据的一个别称或引用,通过该别称或引用亦便可访问.操作原有数据,但原有数 ...
- NumPy副本和视图
NumPy - 副本和视图 在执行函数时,其中一些返回输入数组的副本,而另一些返回视图. 当内容物理存储在另一个位置时,称为副本. 另一方面,如果提供了相同内存内容的不同视图,我们将其称为视图. 无复 ...
- 17、NumPy——副本和视图
副本是一个数据的完整的拷贝,如果我们对副本进行修改,它不会影响到原始数据,物理内存不在同一位置. 视图是数据的一个别称或引用,通过该别称或引用亦便可访问.操作原有数据,但原有数据不会产生拷贝.如果我们 ...
- 吴裕雄--天生自然Numpy库学习笔记:NumPy 副本和视图
副本是一个数据的完整的拷贝,如果我们对副本进行修改,它不会影响到原始数据,物理内存不在同一位置. 视图是数据的一个别称或引用,通过该别称或引用亦便可访问.操作原有数据,但原有数据不会产生拷贝.如果我们 ...
- 007-elasticsearch5.4.3【一】概述、Elasticsearch 访问方式、Elasticsearch 面向文档、常用概念
一.概述 Elasticsearch 是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene™ 基础之上. Elasticsearch 也是使用 Java 编写的,它的内部使用 L ...
- 【PS技巧】常用概念和功能操作
常用概念 1.画布大小与图像大小 画布大小是图像背景的大小,即画纸.图像大小是当前编辑的图层的所有对象大小,即画纸上的画. 常用功能操作 1.打开和新建功能 打开图片:Ctrl+O或双击工作区 图片垂 ...
- Python--多线程、多进程常用概念
一.常用概念 进程 进程就是一个程序在一个数据集上的一次动态执行过程.进程一般由程序.数据集.进程控制块三部分组成. 线程 线程的出现是为了降低上下文切换的消耗,提高系统的并发性,并突破一个进程只能干 ...
- Document-对象属性和常用的对象方法
Document-对象属性和常用的对象方法 对象属性 document.title //设置文档标题等价于HTML的title标签 document ...
- .NET中制做对象的副本(一)
.NET中对于复杂对象制作副本比较困难,闲暇之时写了这个方法,和大家分享. 本案例用于大型对象的副本制作,常见的应用场景就是树形对象节点的拷贝,但是也有局限性,目前使用于类里有基本类型(int sti ...
随机推荐
- Hadoop源码分析(3): Hadoop的运行痕迹
在使用hadoop的时候,可能遇到各种各样的问题,然而由于hadoop的运行机制比较复杂,因而出现了问题的时候比较难于发现问题. 本文欲通过某种方式跟踪Hadoop的运行痕迹,方便出现问题的时候可以通 ...
- .NET Core的依赖注入[1]: 控制反转
写在前面:我之前写过一系列关于.NET Core依赖注入的文章,由于.NET Core依赖注入框架的实现原理发生了很大的改变,加上我对包括IoC和DI这些理论层面的东西又有了一些新的理解,所以我在此基 ...
- 在 Ubuntu 中使用 Visual Studio Code
前言 我一直在 Linux 桌面系统下的探索寻找各种界面美观.使用舒适的软件工具.对于Linux下的开发人员来讲,这几年最大的福利就是 MicroSoft 推出的 Visual Studio Code ...
- 连接池c3p0 ,Proxool ,Druid ,Tomcat Jdbc Pool对比测试
这次所要做的测试是比较几种我们常用的数据库连接池的性能,他们分别是:c3p0 ,Proxool ,Druid ,Tomcat Jdbc Pool这四种,测试将采用统一的参数配置力求比较“公平”的体现统 ...
- Angularjs中的缓存以及缓存清理
写在最前面:这篇博文是2篇文章组成,详细介绍了Angularjs中的缓存以及缓存清理,文章由上海尚学堂转载过来,欢迎大家阅读和评论.转载请注明出处,谢谢! 一个缓存就是一个组件,它可以透明地储存数据, ...
- Spring Cloud Greenwich 正式发布,Hystrix 即将寿终正寝。。
Spring Cloud Greenwich 正式版在 01/23/2019 这天正式发布了,下面我们来看下有哪些更新内容. 生命周期终止提醒 Spring Cloud Edgware Edgware ...
- MySQL优化之推荐使用规范
一.基础规范 使用InnoDB存储引擎支持事务.行级锁.并发性能更好.CPU及内存缓存页优化使得资源利用率更高 推荐使用utf8mb4字符集无需转码,无乱码风险, 支持emoji表情以及部分不常见汉字 ...
- Python内置函数(58)——slice
英文文档: class slice(stop) class slice(start, stop[, step]) Return a slice object representing the set ...
- HTTPS 到底加密了什么?
关于 HTTP 和 HTTPS 这个老生常谈的话题,我们之前已经写过很多文章了,比如这篇<从HTTP到HTTPS再到HSTS>,详细讲解了 HTTP 和 HTTPS 的进化之路,对的没错, ...
- 受到 1 万点暴击,二狗子被 DDoS 攻击的惨痛经历
二狗子的遭遇 “好消息,好消息,免费 DDoS 攻击软件上线了,性感黑客在线攻击,帮您攻克所有商业难题.”二狗子不知道在看着什么网站,新买的 Mac 中发出热闹的声音. 二狗子想知道“DDoS 是什么 ...