对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编程之变量赋值操作实例分析
Jul 24 Python
Python正确重载运算符的方法示例详解
Aug 27 Python
python实现猜单词小游戏
May 22 Python
django 自定义过滤器(filter)处理较为复杂的变量方法
Aug 12 Python
完美解决ARIMA模型中plot_acf画不出图的问题
Jun 04 Python
Django中F函数的使用示例代码详解
Jul 06 Python
Win10下配置tensorflow-gpu的详细教程(无VS2015/2017)
Jul 14 Python
深入了解Python装饰器的高级用法
Aug 13 Python
Python pickle模块常用方法代码实例
Oct 10 Python
Django自带用户认证系统使用方法解析
Nov 12 Python
python excel和yaml文件的读取封装
Jan 12 Python
图神经网络GNN算法
May 11 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
DC《小丑》11项提名领跑奥斯卡 Netflix成第92届奥斯卡提名最大赢家
2020/04/09 欧美动漫
php将textarea数据提交到mysql出现很多空格的解决方法
2014/12/19 PHP
浅析php静态方法与非静态方法的用法区别
2016/05/17 PHP
IE浏览器打印的页眉页脚设置解决方法
2009/12/08 Javascript
firefox下jquery ajax返回object XMLDocument处理方法
2014/01/26 Javascript
JS截取url中问号后面参数的值信息
2014/04/29 Javascript
jQuery $命名冲突解决方案汇总
2014/11/13 Javascript
JS实现常见的TAB、弹出层效果(TAB标签,斑马线,遮罩层等)
2015/10/08 Javascript
jQuery实现可关闭固定于底(顶)部的工具条菜单效果
2015/11/06 Javascript
js实现符合国情的日期插件详解
2017/01/19 Javascript
JS闭包用法实例分析
2017/03/27 Javascript
基于构造函数的五种继承方法小结
2017/07/27 Javascript
JS点击图片弹出文件选择框并覆盖原图功能的实现代码
2017/08/25 Javascript
微信小程序之发送短信倒计时功能
2017/08/30 Javascript
mint-ui 时间插件使用及获取选择值的方法
2018/02/09 Javascript
JavaScript生成指定范围的时间列表
2018/03/19 Javascript
jQuery实现的淡入淡出与滑入滑出效果示例
2018/04/18 jQuery
详解使用jQuery.i18n.properties实现js国际化
2018/05/04 jQuery
JavaScript去掉数组重复项的方法分析【测试可用】
2018/07/19 Javascript
运用js实现图层拖拽的功能
2019/05/24 Javascript
ant design vue datepicker日期选择器中文化操作
2020/10/28 Javascript
通过实例了解Render Props回调地狱解决方案
2020/11/04 Javascript
使用Python的Flask框架来搭建第一个Web应用程序
2016/06/04 Python
详细解读tornado协程(coroutine)原理
2018/01/15 Python
Python多线程操作之互斥锁、递归锁、信号量、事件实例详解
2020/03/24 Python
浅谈Html5页面打开app的一些思考
2020/03/30 HTML / CSS
英国网上购买肉类网站:Great British Meat
2018/10/17 全球购物
工程部经理岗位职责
2013/12/08 职场文书
三好学生自我鉴定
2013/12/17 职场文书
物理专业本科生自荐信
2014/01/30 职场文书
环保小标语
2014/06/13 职场文书
优秀班主任材料
2014/12/16 职场文书
当幸福来敲门英文观后感
2015/06/01 职场文书
纯CSS实现酷炫的霓虹灯效果
2021/04/13 HTML / CSS
Vue实现动态查询规则生成组件
2021/05/27 Vue.js
浅谈JavaScript浅拷贝和深拷贝
2021/11/07 Javascript