对numpy中向量式三目运算符详解


Posted in Python onOctober 31, 2018

如果用到数据筛选功能,可以使用x if condition else y的逻辑实现。如果使用的是纯Python,可以使用不断迭代的方式对每一组元素组合进行相应的判断筛选。不过,如果使用numpy中的向量化计可以大大加速运算的过程。

在numpy中有一个这个三目运算的向量版本numpy.where。where方法可以接收三个参数,第一个参数为条件向量,而第二、第三个参数可以是矩阵也可以是标量。接下来做一下相应功能的纯Python功能实现以及向量方式实现。

记录如下:

In [76]: xarr = np.array([1.1,1.2,1.3,1.4,1.5])

In [77]: yarr = xarr + 1


In [78]: xarr
Out[78]: array([ 1.1, 1.2, 1.3, 1.4, 1.5])


In [79]: yarr
Out[79]: array([ 2.1, 2.2, 2.3, 2.4, 2.5])


In [80]: cond = np.array([True,False,True,True,False])


In [81]: cond
Out[81]: array([ True, False, True, True, False], dtype=bool)


In [82]: result1 = [(x if c else y) for x,y,c in zip(xarr,yarr,cond)]


In [83]: result1
Out[83]: [1.1000000000000001, 2.2000000000000002, 1.3, 1.3999999999999999, 2.5]


In [84]: result2 = np.where(cond,xarr,yarr)


In [85]: result2
Out[85]: array([ 1.1, 2.2, 1.3, 1.4, 2.5])

从浮点表示上,两者有一点点小小的差异,在小数点后多位,通常在数值表示上可以忽略。不过,这里还是要进行一下两个结果的一致性判断,因为之前也看到过Python在浮点表达上因为机器而产生的差异。

测试的结果如下:

In [87]: result1 == result2
Out[87]: array([ True, True, True, True, True], dtype=bool)

从上面的结果可以看出,两个计算结果是一致的。

以上这篇对numpy中向量式三目运算符详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中logging包的使用总结
Feb 28 Python
Ubuntu下使用Python实现游戏制作中的切分图片功能
Mar 30 Python
python3 打开外部程序及关闭的示例
Nov 06 Python
关于Django ForeignKey 反向查询中filter和_set的效率对比详解
Dec 15 Python
对Python闭包与延迟绑定的方法详解
Jan 07 Python
基于Python的PIL库学习详解
May 10 Python
python实现共轭梯度法
Jul 03 Python
python如何统计代码运行的时长
Jul 24 Python
python实现飞机大战游戏(pygame版)
Oct 26 Python
Django ForeignKey与数据库的FOREIGN KEY约束详解
May 20 Python
Python中pass的作用与使用教程
Nov 13 Python
解决python3安装pandas出错的问题
May 20 Python
对numpy中的where方法嵌套使用详解
Oct 31 #Python
在Python中使用defaultdict初始化字典以及应用方法
Oct 31 #Python
在ubuntu16.04中将python3设置为默认的命令写法
Oct 31 #Python
设置python3为默认python的方法
Oct 31 #Python
在双python下设置python3为默认的方法
Oct 31 #Python
利用Python将文本中的中英文分离方法
Oct 31 #Python
python list格式数据excel导出方法
Oct 31 #Python
You might like
php一个找二层目录的小东东
2012/08/02 PHP
使用PHP接受文件并获得其后缀名的方法
2015/08/05 PHP
教你在header中隐藏php的版本信息
2016/08/10 PHP
PHP中如何使用Redis接管文件存储Session详解
2018/11/28 PHP
解决Laravel无法使用COOKIE和SESSION的问题
2019/10/16 PHP
用js得到网页中所有的div的id
2020/10/19 Javascript
js+FSO遍历文件夹下文件并显示
2007/03/07 Javascript
php中给js数组赋值方法
2014/03/10 Javascript
关于JavaScript对象的动态选择及遍历对象
2014/03/10 Javascript
jQuery的缓存机制浅析
2014/06/07 Javascript
基于jQuery实现放大镜特效
2020/10/19 Javascript
深入学习JavaScript的AngularJS框架中指令的使用方法
2016/03/05 Javascript
深入解析Backbone.js框架的依赖库Underscore.js的作用
2016/05/07 Javascript
JavaScript+Java实现HTML页面转为PDF文件保存的方法
2016/05/30 Javascript
jquery mobile实现可折叠的导航按钮
2017/03/11 Javascript
ES6模块化的import和export用法方法总结
2017/08/08 Javascript
自制简易打赏功能的实例
2017/09/02 Javascript
javascript关于“时间”的一次探索
2019/07/24 Javascript
微信小程序开发中var that =this的用法详解
2020/01/18 Javascript
Python 元组(Tuple)操作详解
2014/03/11 Python
python中kmeans聚类实现代码
2018/02/23 Python
python爬虫爬取微博评论案例详解
2019/03/27 Python
Python调用百度根据经纬度查询地址的示例代码
2019/07/07 Python
Python爬虫Scrapy框架CrawlSpider原理及使用案例
2020/11/20 Python
HTML5 canvas 基本语法
2009/08/26 HTML / CSS
美国一家专业的太阳镜网上零售商:Solstice太阳镜
2016/07/25 全球购物
法国时尚品牌乐都特瑞士站:La Redoute瑞士
2016/09/05 全球购物
美国第二大连锁药店:Rite Aid
2019/04/03 全球购物
阿玛尼美妆俄罗斯官网:Giorgio Armani Beauty RU
2020/07/19 全球购物
母婴店促销方案
2014/03/05 职场文书
献爱心大型公益活动策划方案
2014/09/15 职场文书
2016教师给学生的毕业寄语
2015/12/04 职场文书
委托开发合同书(标准版)
2019/08/07 职场文书
javascript实现计算器功能详解流程
2021/11/01 Javascript
python超详细实现完整学生成绩管理系统
2022/03/17 Python
详解Go语言中配置文件使用与日志配置
2022/06/01 Golang