对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发送邮件实例
Jan 10 Python
python cx_Oracle的基础使用方法(连接和增删改查)
Nov 19 Python
分享6个隐藏的python功能
Dec 07 Python
Python操作Sql Server 2008数据库的方法详解
May 17 Python
python解决字符串倒序输出的问题
Jun 25 Python
python实现简单加密解密机制
Mar 19 Python
Python+PyQt5实现美剧爬虫可视工具的方法
Apr 25 Python
Mac在python3环境下安装virtualwrapper遇到的问题及解决方法
Jul 09 Python
python实现把两个二维array叠加成三维array示例
Nov 29 Python
python ETL工具 pyetl
Jun 07 Python
小结Python的反射机制
Sep 28 Python
python 基于DDT实现数据驱动测试
Feb 18 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,不用COM,生成excel文件
2006/10/09 PHP
PHP5 字符串处理函数大全
2010/03/23 PHP
第四章 php数学运算
2011/12/30 PHP
分享自定义的几个PHP功能函数
2015/04/15 PHP
php实现json编码的方法
2015/07/30 PHP
PHP实现的折半查找算法示例
2017/12/19 PHP
在TP5数据库中四个字段实现无限分类的示例
2019/10/18 PHP
JavaScript 语言的递归编程
2010/05/18 Javascript
js最简单的拖拽效果实现代码
2010/09/24 Javascript
JavaScript创建对象的写法
2013/08/29 Javascript
js中function()使用方法
2013/12/24 Javascript
使用jQuery重置(reset)表单的方法
2014/05/05 Javascript
Ext4.2的Ext.grid.plugin.RowExpander无法触发事件解决办法
2014/08/15 Javascript
JS日期格式化之javascript Date format
2015/10/01 Javascript
xtemplate node.js 的使用方法实例解析
2016/08/22 Javascript
JS中append字符串包含onclick无效传递参数失败的解决方案
2016/12/26 Javascript
bootstrap日期控件问题(双日期、清空等问题解决)
2017/04/19 Javascript
nodejs 终端打印进度条实例代码
2017/04/22 NodeJs
微信小程序首页的分类功能和搜索功能的实现思路及代码详解
2018/09/11 Javascript
Node.js Buffer模块功能及常用方法实例分析
2019/01/05 Javascript
Node.js 多进程处理CPU密集任务的实现
2019/05/26 Javascript
[06:59]DOTA2-DPC中国联赛3月7日Recap集锦
2021/03/11 DOTA
Python打印“菱形”星号代码方法
2018/02/05 Python
selenium使用chrome浏览器测试(附chromedriver与chrome的对应关系表)
2018/11/29 Python
python并发编程 Process对象的其他属性方法join方法详解
2019/08/20 Python
python GUI库图形界面开发之PyQt5多行文本框控件QTextEdit详细使用方法实例
2020/02/28 Python
keras之权重初始化方式
2020/05/21 Python
Python抓包并解析json爬虫的完整实例代码
2020/11/03 Python
波兰电子产品购物网站:Vobis
2019/05/26 全球购物
设计毕业生简历中的自我评价
2013/10/01 职场文书
广场舞大赛策划方案
2014/05/31 职场文书
群众路线自查自纠工作情况报告
2014/10/28 职场文书
医生见习报告范文
2014/11/03 职场文书
政风行风整改报告
2014/11/06 职场文书
用Python写一个简易版弹球游戏
2021/04/13 Python
JS前端轻量fabric.js系列之画布初始化
2022/08/05 Javascript