对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基础入门学习笔记(Python环境搭建)
Jan 13 Python
python将文本中的空格替换为换行的方法
Mar 19 Python
python 文本单词提取和词频统计的实例
Dec 22 Python
Django-Model数据库操作(增删改查、连表结构)详解
Jul 17 Python
python操作cfg配置文件方式
Dec 22 Python
Pytorch 中retain_graph的用法详解
Jan 07 Python
python构造函数init实例方法解析
Jan 19 Python
Matplotlib使用字符串代替变量绘制散点图的方法
Feb 17 Python
python logging通过json文件配置的步骤
Apr 27 Python
用opencv给图片换背景色的示例代码
Jul 08 Python
基于python实现坦克大战游戏
Oct 27 Python
提取视频中的音频 Python只需要三行代码!
May 10 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写的MySQL数据库用户认证系统代码
2007/03/22 PHP
详解php的魔术方法__get()和__set()使用介绍
2012/09/19 PHP
使用Curl进行抓取远程内容时url中文编码问题示例探讨
2013/10/29 PHP
php数组随机排序实现方法
2015/06/13 PHP
php中使用websocket详解
2016/09/23 PHP
让人期待的2011年度最佳 jQuery 插件分享
2012/03/16 Javascript
Js 回车换行处理的办法及replace方法应用
2013/01/24 Javascript
Eclipse编辑jsp、js文件时卡死现象的解决办法汇总
2016/02/02 Javascript
基于javascript实现按圆形排列DIV元素(二)
2016/12/02 Javascript
js+canvas实现动态吃豆人效果
2017/03/22 Javascript
JS对象序列化成json数据和json数据转化为JS对象的代码
2017/08/23 Javascript
Vue.js 2.5新特性介绍(推荐)
2017/10/24 Javascript
layui 优化button按钮和弹出框的方法
2018/08/15 Javascript
vue-cli3.0如何使用CDN区分开发、生产、预发布环境
2018/11/22 Javascript
nuxt踩坑之Vuex状态树的模块方式使用详解
2019/09/06 Javascript
关于layui 下拉列表的change事件详解
2019/09/20 Javascript
JavaScript日期库date-fn.js使用方法解析
2020/09/09 Javascript
[01:41]DOTA2 2015国际邀请赛中国区预选赛第三日战报
2015/05/28 DOTA
[41:08]TNC vs VG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python设计模式之观察者模式实例
2014/04/26 Python
详谈套接字中SO_REUSEPORT和SO_REUSEADDR的区别
2018/04/28 Python
python读取当前目录下的CSV文件数据
2020/03/11 Python
Django Admin设置应用程序及模型顺序方法详解
2020/04/01 Python
使用OpenCV实现道路车辆计数的使用方法
2020/07/15 Python
Python 3.9的到来到底是意味着什么
2020/10/14 Python
15个Pythonic的代码示例(值得收藏)
2020/10/29 Python
Python实例教程之检索输出月份日历表
2020/12/16 Python
Html5无刷新修改browser Url的方法
2014/01/15 HTML / CSS
南非最大的花卉和送礼服务:NetFlorist
2017/09/13 全球购物
澳大利亚先进的皮肤和激光诊所购物网站:Soho Skincare
2018/10/15 全球购物
Hawes & Curtis官网:英国经典品牌
2019/07/27 全球购物
出生医学证明书
2014/09/15 职场文书
2014教师党员自我评议总结
2014/09/19 职场文书
四风对照检查材料范文
2014/09/27 职场文书
幼儿园端午节活动总结
2015/05/05 职场文书
婚礼迎宾词大全
2015/08/10 职场文书