对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中函数的参数与作用域
Mar 20 Python
初学python的操作难点总结(新手必看篇)
Aug 03 Python
python用户管理系统的实例讲解
Dec 23 Python
python+opencv实现动态物体追踪
Jan 09 Python
PYTHON基础-时间日期处理小结
May 05 Python
Python安装与基本数据类型教程详解
May 29 Python
python自动化实现登录获取图片验证码功能
Nov 20 Python
python 利用turtle库绘制笑脸和哭脸的例子
Nov 23 Python
Python 随机生成测试数据的模块:faker基本使用方法详解
Apr 09 Python
Python钉钉报警及Zabbix集成钉钉报警的示例代码
Aug 17 Python
详解如何修改python中字典的键和值
Sep 29 Python
python爬虫分布式获取数据的实例方法
Nov 26 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开发过程中关于继承的使用方法分享
2011/06/17 PHP
PHP中exec函数和shell_exec函数的区别
2014/08/20 PHP
PHP设计模式之状态模式定义与用法详解
2018/04/02 PHP
php 可变函数使用小结
2018/06/12 PHP
中国地区三级联动下拉菜单效果分析
2012/11/15 Javascript
javascript仿php的print_r函数输出json数据
2013/09/13 Javascript
jquery简单实现滚动条下拉DIV固定在头部不动
2013/11/25 Javascript
深入理解javascript构造函数和原型对象
2014/09/23 Javascript
node.js中的fs.utimesSync方法使用说明
2014/12/15 Javascript
jQuery中remove()方法用法实例
2014/12/25 Javascript
javascript实现html页面之间参数传递的四种方法实例分析
2015/12/15 Javascript
jquery及js实现动态加载js文件的方法
2016/01/21 Javascript
js设置和获取自定义属性的方法
2016/10/20 Javascript
Javascript 获取鼠标当前的位置实现方法
2016/10/27 Javascript
微信小程序 基础知识css样式media标签
2017/02/15 Javascript
微信小程序 开发MAP(地图)实例详解
2017/06/27 Javascript
解决VUEX刷新的时候出现数据消失
2017/07/03 Javascript
JS数组去重常用方法实例小结【4种方法】
2018/05/28 Javascript
Vue的编码技巧与规范使用详解
2019/08/28 Javascript
JS实现导航栏楼层特效
2020/01/01 Javascript
原生js实现表格翻页和跳转
2020/09/29 Javascript
微信小程序实现首页弹出广告
2020/12/03 Javascript
Python语言的变量认识及操作方法
2018/02/11 Python
python 伯努利分布详解
2020/02/25 Python
利用Python实现某OA系统的自动定位功能
2020/05/27 Python
如何使用python记录室友的抖音在线时间
2020/06/29 Python
HTML5 canvas绘制的玫瑰花效果
2014/05/29 HTML / CSS
美国零售商店:Blue&Cream
2017/04/07 全球购物
英国时尚配饰、珠宝和服装网站:KJ Beckett
2020/01/23 全球购物
银行毕业实习自我鉴定
2013/09/19 职场文书
一年级数学教学反思
2014/02/01 职场文书
机械工程学院大学生求职信
2014/05/25 职场文书
2015年学校总务处工作总结
2015/05/19 职场文书
初中开学典礼新闻稿
2015/07/17 职场文书
详细了解MVC+proxy
2021/07/09 Java/Android
Python List remove()实例用法详解
2021/08/02 Python