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系列(三)- 基本运算操作的更多相关文章

  1. 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, ...

  2. 5.3Python数据处理篇之Sympy系列(三)---简化操作

    目录 5.3简化操作 目录 前言 (一)有理数与多项式的简化 1.最简化-simplify() 2.展开-expand() 3.提公因式-factor() 4.合并同类项-ceiling() 5.简化 ...

  3. 3.3Python数据处理篇之Numpy系列(三)---数组的索引与切片

    目录 (一)数组的索引与切片 1.说明: 2.实例: (二)多维数组的索引与切片 1.说明: 2.实例: 目录: 1.一维数组的索引与切片 2.多维数组的索引与切片 (一)数组的索引与切片 1.说明: ...

  4. oracle系列(三)表操作基础

    支持的数据类型: 字符型char 定长 最大2000varchar2() 变长 最大4000clob 字符型大对象 最大4G 数字型number范围 -10的38次方到10的+38次方;number( ...

  5. DocX开源WORD操作组件的学习系列三

    DocX学习系列 DocX开源WORD操作组件的学习系列一 : http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_sharp_001_docx1.htm ...

  6. .net reactor 学习系列(三)---.net reactor代码自动操作相关保护功能

    原文:.net reactor 学习系列(三)---.net reactor代码自动操作相关保护功能         接上篇,上篇已经学习了界面的各种功能以及各种配置,这篇准备学习下代码控制许可证. ...

  7. MySQL并发复制系列三:MySQL和MariaDB实现对比

    http://blog.itpub.net/28218939/viewspace-1975856/ 并发复制(Parallel Replication) 系列三:MySQL 5.7 和MariaDB ...

  8. SQL Server 2008空间数据应用系列三:SQL Server 2008空间数据类型

    原文:SQL Server 2008空间数据应用系列三:SQL Server 2008空间数据类型 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server ...

  9. 系列三VisualSvn Server

    原文:系列三VisualSvn Server VisualSvn Server介绍 1 .VisualSvn Server  VisualSvn Server是免费的,而VisualSvn是收费的.V ...

  10. java‘小秘密’系列(三)---HashMap

    java'小秘密'系列(三)---HashMap java基础系列 java'小秘密'系列(一)---String.StringBuffer.StringBuilder java'小秘密'系列(二)- ...

随机推荐

  1. C#中的值类型和引用类型,深拷贝,浅拷贝

    from https://www.jianshu.com/p/2d27b06e253f 一.C#中的值类型和引用类型 概念 值类型直接存储其值. 引用类型存储对值的引用. 说起来有些拗口,其本质是Va ...

  2. 前后端分离djangorestframework—— 接入第三方的验证码平台

    关于验证码部分,在我这篇文章里说的挺详细的了:Python高级应用(3)—— 为你的项目添加验证码 这里还是再给一个前后端分离的实例,因为极验官网给的是用session作为验证的,而我们做前后端分离的 ...

  3. 理解ECS的概念和Unity中的ECS设计

    组合优于继承 ecs的概念很早就有了,最初的主要目的应该还是为了改善设计. e-c-s三者都有其意义,e-c是组合优于继承,主要用以改善oo的继承耦合过重以及多继承菱形问题. oop常见设计里,每个g ...

  4. Html 解决数字和字母不换行

    在html页面中,如果是数字或者字母显示的话,默认是不换行的.一般显示成这种: 解决方法确实也很简单,设置td或者div为: style="word-break:break-all;&quo ...

  5. 【Teradata SQL】创建数据库和表

    1.数据库perm大小为10G Create database testbase as perm=10E9,spool=10E9; 2.创建物理表 create multiset table stg( ...

  6. 【转】Android OkHttp3简介和使用详解

    一 OKHttp简介 OKHttp是一个处理网络请求的开源项目,Android 当前最火热网络框架,由移动支付Square公司贡献,用于替代HttpUrlConnection和Apache HttpC ...

  7. NOIP2018:The First Step

    NOIP2018 RP=Ackermann(4,3) Day 0 日常不想做题也不知道要写什么qwq Day 1 接到$smy$巨佬的催更私信于是来更了(原本准备咕掉的) 最开始的策略是准备总览题目, ...

  8. SpringCloud(4)熔断器 Hystrix

    在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以相互调用(RPC),在Spring Cloud可以用RestTemplate+Ribbon和Feign来调用.为了保证其高可用,单个服务 ...

  9. Fatal error: Call to undefined function json_decode()解决办法

    最近搭建测试服务器,访问网站查看报错日志出现如下错误: Fatal error: Call to undefined function json_decode() 出现该问题原因是安装PHP时没有安装 ...

  10. hMailServer 邮件服务器搭建

    HMailServer是一个运行于微软Windows系统.基于GPL授权.免费的电子邮件系统:支持常见的电子邮件协议SMTP.POP3.IMAP:可以很容易地与许多现有的网络邮件系统集成和二次开发:具 ...