对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中的from..import绝对导入语句
Jun 21 Python
Python中的连接符(+、+=)示例详解
Jan 13 Python
python实现快速排序的示例(二分法思想)
Mar 12 Python
pycharm new project变成灰色的解决方法
Jun 27 Python
Python动态语言与鸭子类型详解
Jul 01 Python
Python openpyxl读取单元格字体颜色过程解析
Sep 03 Python
PyCharm导入python项目并配置虚拟环境的教程详解
Oct 13 Python
Django values()和value_list()的使用
Mar 31 Python
OpenCV 表盘指针自动读数的示例代码
Apr 10 Python
Python模拟登入的N种方式(建议收藏)
May 31 Python
django restframework serializer 增加自定义字段操作
Jul 15 Python
如何使用Python自动生成报表并以邮件发送
Oct 15 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 autoload机制的详解
2013/06/09 PHP
ThinkPHP验证码使用简明教程
2014/03/05 PHP
php实现在线通讯录功能(附源码)
2016/05/13 PHP
iis 7下安装laravel 5.4环境的方法教程
2017/06/14 PHP
javascript onkeydown,onkeyup,onkeypress,onclick,ondblclick
2009/02/04 Javascript
javascript实现TreeView 无刷新展开的实例代码
2013/07/13 Javascript
jquery内置验证(validate)使用方法示例(表单验证)
2013/12/04 Javascript
jquery插件jTimer(jquery定时器)使用方法
2013/12/23 Javascript
一个网页标题title的闪动提示效果实现思路
2014/03/22 Javascript
js实现文字跟随鼠标移动而移动的方法
2015/02/28 Javascript
javascript实现点击后变换按钮显示文字的方法
2015/05/13 Javascript
js实现网站最上边可关闭的浮动广告条代码
2015/09/04 Javascript
jQuery Mobile操作HTML5的常用函数总结
2016/05/17 Javascript
vuejs如何配置less
2017/04/25 Javascript
Javascript继承机制详解
2017/05/30 Javascript
angular ng-click防止重复提交实例
2017/06/16 Javascript
Bootstrap + AngularJS 实现简单的数据过滤字符查找功能
2017/07/27 Javascript
浅谈Vue.js 组件中的v-on绑定自定义事件理解
2017/11/17 Javascript
JavaScript基于面向对象实现的猜拳游戏
2018/01/03 Javascript
基于Vuex无法观察到值变化的解决方法
2018/03/01 Javascript
读懂CommonJS的模块加载
2019/04/19 Javascript
原生js实现点击按钮复制内容到剪切板
2020/11/19 Javascript
python检查URL是否正常访问的小技巧
2017/02/25 Python
python实现跨excel的工作表sheet之间的复制方法
2018/05/03 Python
Python中typing模块与类型注解的使用方法
2019/08/05 Python
如何在Django中使用聚合的实现示例
2020/03/23 Python
通过python 执行 nohup 不生效的解决
2020/04/16 Python
Django 允许局域网中的机器访问你的主机操作
2020/05/13 Python
CSS3的resize属性使用初探
2015/09/27 HTML / CSS
Canvas多边形绘制的实现方法
2019/08/05 HTML / CSS
Expedia法国:全球最大在线旅游公司
2018/09/30 全球购物
运动会广播稿80字
2014/01/23 职场文书
质监局领导班子践行群众路线整改方案
2014/10/26 职场文书
2014年图书馆个人工作总结
2014/12/18 职场文书
新兵入伍决心书
2015/09/22 职场文书
Python3接口性能测试实例代码
2021/06/20 Python