对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六大开源框架对比
Oct 19 Python
Python解析excel文件存入sqlite数据库的方法
Nov 15 Python
视觉直观感受若干常用排序算法
Apr 13 Python
对Tensorflow中权值和feature map的可视化详解
Jun 14 Python
Python中staticmethod和classmethod的作用与区别
Oct 11 Python
Django实现学员管理系统
Feb 26 Python
解决python中使用PYQT时中文乱码问题
Jun 17 Python
python 获取等间隔的数组实例
Jul 04 Python
python小程序实现刷票功能详解
Jul 17 Python
Python爬虫抓取指定网页图片代码实例
Jul 24 Python
PyCharm+PyQt5+QtDesigner配置详解
Aug 12 Python
Python性能测试工具Locust安装及使用
Dec 01 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
ip签名探针
2006/10/09 PHP
PHP开发入门教程之面向对象
2006/12/05 PHP
一个PHP分页类的代码
2011/05/18 PHP
ThinkPHP的cookie和session冲突造成Cookie不能使用的解决方法
2014/07/01 PHP
php文件缓存类用法实例分析
2015/04/22 PHP
php验证手机号码
2015/11/11 PHP
js数组Array sort方法使用深入分析
2013/02/21 Javascript
js实现下拉框选择要显示图片的方法
2015/02/16 Javascript
ECMAScript6中Map/WeakMap详解
2015/06/12 Javascript
jQuery获取table行数并输出单元格内容的实现方法
2016/06/30 Javascript
Java  Spring 事务回滚详解
2016/10/17 Javascript
angular双向绑定模拟探索
2016/12/26 Javascript
js实现自定义进度条效果
2017/03/15 Javascript
vue如何获取点击事件源的方法
2017/08/10 Javascript
Vue 中的compile操作方法
2018/02/26 Javascript
实现Vue的markdown文档可以在线运行的方法示例
2018/12/11 Javascript
Element-UI中Upload上传文件前端缓存处理示例
2019/02/21 Javascript
Vue对象赋值视图不更新问题及解决方法
2019/06/03 Javascript
详解Angular cli配置过程记录
2019/11/07 Javascript
c++生成dll使用python调用dll的方法
2014/01/20 Python
python直接访问私有属性的简单方法
2016/07/25 Python
Python读取txt文件数据的方法(用于接口自动化参数化数据)
2018/06/27 Python
python查找重复图片并删除(图片去重)
2019/07/16 Python
python3 map函数和filter函数详解
2019/08/26 Python
哪些是python中web开发框架
2020/06/17 Python
端午节活动策划方案
2014/03/09 职场文书
综治宣传月活动总结
2014/04/28 职场文书
专科应届毕业生求职信
2014/06/04 职场文书
教师工作自我鉴定范文
2014/09/14 职场文书
司机岗位职责
2015/02/04 职场文书
2015年幼儿园后勤工作总结
2015/04/25 职场文书
我的暑假生活作文(五年级)范文
2019/08/07 职场文书
详解nodejs内置模块
2021/05/06 NodeJs
唤醒紫霞仙子,携手再游三界!大话手游X《大话西游》电影合作专属剧情任务
2022/04/03 其他游戏
手把手带你彻底卸载MySQL数据库
2022/06/14 MySQL
postgresql中如何执行sql文件
2023/05/08 PostgreSQL