对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进阶教程之循环相关函数range、enumerate、zip
Aug 30 Python
python获取本地计算机名字的方法
Apr 29 Python
python查看FTP是否能连接成功的方法
Jul 30 Python
Python两个内置函数 locals 和globals(学习笔记)
Aug 28 Python
Python 'takes exactly 1 argument (2 given)' Python error
Dec 13 Python
Zookeeper接口kazoo实例解析
Jan 22 Python
Python3 Post登录并且保存cookie登录其他页面的方法
Dec 28 Python
Django中如何防范CSRF跨站点请求伪造攻击的实现
Apr 28 Python
PyTorch实现更新部分网络,其他不更新
Dec 31 Python
PYQT5 vscode联合操作qtdesigner的方法
Mar 24 Python
Python使用itcaht库实现微信自动收发消息功能
Jul 13 Python
python MD5加密的示例
Oct 19 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+XML 制作简单的留言本 图文教程
2009/11/02 PHP
php中session_unset与session_destroy的区别分析
2011/06/16 PHP
php创建基本身份认证站点的方法详解
2013/06/08 PHP
php unset全局变量运用问题的深入解析
2013/06/17 PHP
php远程下载类分享
2016/04/13 PHP
Laravel SQL语句记录方式(推荐)
2016/05/26 PHP
tp5修改(实现即点即改)
2019/10/18 PHP
Javascript实现的类似Google的Div拖动效果代码
2011/08/09 Javascript
JS 实现导航栏悬停效果
2013/09/23 Javascript
window.print打印指定div实例代码
2013/12/13 Javascript
浅谈window.onbeforeunload() 事件调用ajax
2016/06/29 Javascript
Vue 2中ref属性的使用方法及注意事项
2017/06/12 Javascript
浅谈angular.copy() 深拷贝
2017/09/14 Javascript
vue渲染时闪烁{{}}的问题及解决方法
2018/03/28 Javascript
nodejs中用npm初始化来创建package.json的实例讲解
2018/10/10 NodeJs
Node.js npm命令运行node.js脚本的方法
2018/10/10 Javascript
JS实现的对象去重功能示例
2019/06/04 Javascript
整理 node-sass 安装失败的原因及解决办法(小结)
2020/02/19 Javascript
Javascript模块化机制实现原理详解
2020/04/02 Javascript
js实现鼠标拖曳效果
2020/12/30 Javascript
python快速查找算法应用实例
2014/09/26 Python
django 2.0更新的10条注意事项总结
2018/01/05 Python
python实现两个经纬度点之间的距离和方位角的方法
2019/07/05 Python
用python生成与调用cntk模型代码演示方法
2019/08/26 Python
Python 中判断列表是否为空的方法
2019/11/24 Python
Python3自动生成MySQL数据字典的markdown文本的实现
2020/05/07 Python
python中字符串的编码与解码详析
2020/12/03 Python
html5 迷宫游戏(碰撞检测)实例一
2013/07/25 HTML / CSS
HTML5 Canvas阴影使用方法实例演示
2013/08/02 HTML / CSS
加拿大消费电子和手机购物网站:The Source
2017/01/28 全球购物
MUGLER官方网站:蒂埃里·穆勒香水
2019/11/26 全球购物
建筑设计师岗位职责
2013/11/18 职场文书
电子专业毕业生自荐信
2014/05/25 职场文书
学习考察心得体会
2014/09/04 职场文书
会计电算化实训报告
2014/11/04 职场文书
开展党的群众路线教育实践活动情况汇报
2014/11/05 职场文书