Numpy系列(三)- 基本运算操作
Numpy 中数组上的算术运算符使用元素级别。最后的结果使用新的一个数组来返回。
import numpy as np
a = np.array( [20,30,40,50] )
b = np.arange(4)
b
Out[113]: array([0, 1, 2, 3])
c = a -b
c
Out[114]: array([20, 29, 38, 47])
b ** 2
Out[115]: array([0, 1, 4, 9], dtype=int32)
a < 34
Out[116]: array([ True, True, False, False])
需要注意的是,乘法运算符*的运算在NumPy数组中也是元素级别的(这与许多矩阵语言不同)。如果想要执行矩阵乘积,可以使用dot函数:
A = np.array( [[1,1], [0,1]] )
B = np.array( [[2,0], [3,4]] )
A
Out[117]:
array([[1, 1],
[0, 1]])
B
Out[118]:
array([[2, 0],
[3, 4]])
A * B
Out[119]:
array([[2, 0],
[0, 4]])
A.dot(B)
Out[120]:
array([[5, 4],
[3, 4]])
np.dot(A,B)
Out[121]:
array([[5, 4],
[3, 4]])
某些操作(如+=和*=)可以修改现有数组,而不是创建新数组。
a = np.ones((2,3), dtype=np.int32)
a *= 3
a
Out[122]:
array([[3, 3, 3],
[3, 3, 3]])
b = np.random.random((2,3))
b
Out[124]:
array([[0.39895014, 0.30638211, 0.9011525 ],
[0.6135912 , 0.02488626, 0.67726569]])
a.dtype
Out[125]: dtype('int32')
b.dtype
Out[126]: dtype('float64')
b += a
b
Out[128]:
array([[3.39895014, 3.30638211, 3.9011525 ],
[3.6135912 , 3.02488626, 3.67726569]])
a += b
Traceback (most recent call last):
File "D:\pytho3.6\lib\site-packages\IPython\core\interactiveshell.py", line 2963, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-129-294cacd62d6f>", line 1, in <module>
a += b
TypeError: Cannot cast ufunc add output from dtype('float64') to dtype('int32') with casting rule 'same_kind'
当使用不同类型的数组操作时,结果数组的类型对应于更一般或更精确的数组(称为向上转换的行为)。
由于定义 a时,数据类型指定为np.int32,而 a+b 生成的数据类型为 np.float64,所以自动转换出错。
around
np.around 返回四舍五入后的值,可指定精度。
around(a, decimals=0, out=None)
输入数组
decimals 要舍入的小数位数。 默认值为0。 如果为负,整数将四舍五入到小数点左侧的位置
import numpy as np n = np.array([-0.746, 4.6, 9.4, 7.447, 10.455, 11.555]) around1 = np.around(n)
print(around1) # [ -1. 5. 9. 7. 10. 12.] around2 = np.around(n, decimals=1)
print(around2) # [ -0.7 4.6 9.4 7.4 10.5 11.6] around3 = np.around(n, decimals=-1)
print(around3) # [ -0. 0. 10. 10. 10. 10.]
floor
np.floor 返回不大于输入参数的最大整数。 即对于输入值 x ,将返回最大的整数 i ,使得 i <= x。 注意在Python中,向下取整总是从 0 舍入。
import numpy as np
n = np.array([-1.7, -2.5, -0.2, 0.6, 1.2, 2.7, 11])
floor = np.floor(n)
print(floor) # [ -2. -3. -1. 0. 1. 2. 11.]
[-2. -3. -1. 0. 1. 2. 11.]
ceil
np.ceil 函数返回输入值的上限,即对于输入 x ,返回最小的整数 i ,使得 i> = x。
import numpy as np n = np.array([-1.7, -2.5, -0.2, 0.6, 1.2, 2.7, 11]) ceil = np.ceil(n)
print(ceil) # [ -1. -2. -0. 1. 2. 3. 11.]
np.where
numpy.where(condition[, x, y])
根据 condition 从 x 和 y 中选择元素,当为 True 时,选 x,否则选 y。
https://docs.scipy.org/doc/numpy/reference/generated/numpy.where.html
import numpy as np
data = np.random.random([2, 3])
print(data)
[[0.37618029 0.09114803 0.12294256]
[0.59006572 0.18597964 0.46023678]]
result = np.where(data > 0.5, data, 0)
print(result)
[[0. 0. 0. ]
[0.59006572 0. 0. ]]
Numpy系列(三)- 基本运算操作的更多相关文章
- Numpy数组的基本运算操作
一.算术运算符 In [3]: a = np.arange(0,5) Out[3]array([0, 1, 2, 3, 4]) In [4]: a+4 Out[4]: array([4, 5, 6, ...
- 5.3Python数据处理篇之Sympy系列(三)---简化操作
目录 5.3简化操作 目录 前言 (一)有理数与多项式的简化 1.最简化-simplify() 2.展开-expand() 3.提公因式-factor() 4.合并同类项-ceiling() 5.简化 ...
- 3.3Python数据处理篇之Numpy系列(三)---数组的索引与切片
目录 (一)数组的索引与切片 1.说明: 2.实例: (二)多维数组的索引与切片 1.说明: 2.实例: 目录: 1.一维数组的索引与切片 2.多维数组的索引与切片 (一)数组的索引与切片 1.说明: ...
- oracle系列(三)表操作基础
支持的数据类型: 字符型char 定长 最大2000varchar2() 变长 最大4000clob 字符型大对象 最大4G 数字型number范围 -10的38次方到10的+38次方;number( ...
- DocX开源WORD操作组件的学习系列三
DocX学习系列 DocX开源WORD操作组件的学习系列一 : http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_sharp_001_docx1.htm ...
- .net reactor 学习系列(三)---.net reactor代码自动操作相关保护功能
原文:.net reactor 学习系列(三)---.net reactor代码自动操作相关保护功能 接上篇,上篇已经学习了界面的各种功能以及各种配置,这篇准备学习下代码控制许可证. ...
- MySQL并发复制系列三:MySQL和MariaDB实现对比
http://blog.itpub.net/28218939/viewspace-1975856/ 并发复制(Parallel Replication) 系列三:MySQL 5.7 和MariaDB ...
- SQL Server 2008空间数据应用系列三:SQL Server 2008空间数据类型
原文:SQL Server 2008空间数据应用系列三:SQL Server 2008空间数据类型 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server ...
- 系列三VisualSvn Server
原文:系列三VisualSvn Server VisualSvn Server介绍 1 .VisualSvn Server VisualSvn Server是免费的,而VisualSvn是收费的.V ...
- java‘小秘密’系列(三)---HashMap
java'小秘密'系列(三)---HashMap java基础系列 java'小秘密'系列(一)---String.StringBuffer.StringBuilder java'小秘密'系列(二)- ...
随机推荐
- Sql Server2014数据库清理日志
Sql Server2014数据库日志占用特别大,清理方法.直接贴代码 USE[master] GO ALTER DATABASE db_Name SET RECOVERY SIMPLE WITH N ...
- SQL语句中不同的连接JOIN
为了从两个表中获取数据,我们有时会用JOIN将两个表连接起来.通常有以下几种连接方式: JOIN or INNER JOIN(内连接) : 这两个是相同的,要求两边表同时有对应的数据,返回行,任何 ...
- c/c++ 网络编程 UDP 发送端 bind 作用
网络编程 UDP 发送端 bind 作用 upd 发送端 调用bind函数的效果:把socket特定到一个指定的端口,如果不调用bind,内核会随机分配一个端口. upd 发送端 调用bind函数的目 ...
- 持续代码质量管理-SonarQube Scanner部署
1. SonarQube Scanner地址 上一篇文章我们安装了SonarQube-7.3,让我们可以在页面查看代码质量.但是具体的扫描工作则需要SonarQube Scanner完成. 下载页面 ...
- SQLServer之删除约束
使用SSMS数据库管理工具删除约束 1.连接数据库,选择数据表->展开键或者约束->选择要删除的约束->右键点击->选择删除. 2.在删除对象弹出框中->点击确定. 3. ...
- .NET CORE学习笔记系列(2)——依赖注入[6]: .NET Core DI框架[编程体验]
原文https://www.cnblogs.com/artech/p/net-core-di-06.html 毫不夸张地说,整个ASP.NET Core框架是建立在一个依赖注入框架之上的,它在应用启动 ...
- vs 2015安装包
Visual Studio 2015 下载含(更新3)及密钥 Visual Studio 2015 是一个丰富的集成开发环境,可用于创建出色的 Windows.Android 和 iOS 应用程序以及 ...
- HTML&CSS
行内元素 <a>.<span>.<br>.<i>.<em>.<strong>.<label>.<q>.& ...
- c# 日期函数DateTime.ToString()日期的各种格式
//c# datetime 格式化 DateTime dt = DateTime.Now; //2017/11/14 10:46:56 label1.Text = dt.ToString();//20 ...
- ES6类封装判断用户上下左右滑动事件!
/** * param 原生js方式实现判断用户的滑动方向 * 返回1 向上 * 返回2 向下 * 返回3 向左 * 返回4 向右 */ class juedgeSlide { constructor ...