对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 相关文章推荐
自动化Nginx服务器的反向代理的配置方法
Jun 28 Python
Python使用Pycrypto库进行RSA加密的方法详解
Jun 06 Python
python变量不能以数字打头详解
Jul 06 Python
Python实现SMTP发送邮件详细教程
Mar 02 Python
一张图带我们入门Python基础教程
Feb 05 Python
python利用多种方式来统计词频(单词个数)
May 27 Python
django用户登录验证的完整示例代码
Jul 21 Python
Python多进程multiprocessing、进程池用法实例分析
Mar 24 Python
解决Keras中CNN输入维度报错问题
Jun 29 Python
python 最简单的实现适配器设计模式的示例
Jun 30 Python
python定义类的简单用法
Jul 24 Python
python用字节处理文件实例讲解
Apr 13 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+dbfile开发小型留言本
2006/10/09 PHP
最常用的8款PHP调试工具
2014/07/06 PHP
Yii列表定义与使用分页方法小结(3种方法)
2016/07/15 PHP
PHP中call_user_func_array回调函数的用法示例
2016/11/26 PHP
Laravel框架源码解析之反射的使用详解
2020/05/14 PHP
基于jquery的实现简单的表格中增加或删除下一行
2010/08/01 Javascript
基于jquery的3d效果实现代码
2011/03/23 Javascript
javascript简易缓动插件(源码打包)
2012/02/16 Javascript
Javascript表单验证要注意的事项
2014/09/29 Javascript
jQuery入门基础知识学习指南
2015/08/14 Javascript
比较常见的javascript中定义函数的区别
2015/11/09 Javascript
javascript常用经典算法实例详解
2015/11/25 Javascript
使用微信内嵌H5网页解决JS倒计时失效问题
2017/01/13 Javascript
JavaScript实现事件的中断传播和行为阻止方法示例
2017/01/20 Javascript
JS实现课堂随机点名和顺序点名
2017/03/09 Javascript
微信小程序之购物车功能
2020/09/23 Javascript
初试vue-cli使用HBuilderx打包app的坑
2019/07/17 Javascript
layui 数据表格复选框实现单选功能的例子
2019/09/19 Javascript
p5.js实现简单货车运动动画
2019/10/23 Javascript
[42:25]EG vs Spirit Supermajor 败者组 BO3 第二场 6.4
2018/06/05 DOTA
python使用wxPython打开并播放wav文件的方法
2015/04/24 Python
深入理解Django-Signals信号量
2019/02/19 Python
PyTorch如何搭建一个简单的网络
2020/08/24 Python
Rodd & Gunn澳大利亚官网:新西兰男装品牌
2018/09/25 全球购物
Foreo国际站:Foreo International
2018/10/29 全球购物
意大利顶级奢侈品电商:LUISAVIAROMA(支持中文)
2020/05/26 全球购物
网上常见的一份Linux面试题(多项选择部分)
2015/02/07 面试题
党员的自我评价范文
2014/01/02 职场文书
水利公司纪检监察自我鉴定
2014/02/25 职场文书
求职意向书
2014/07/29 职场文书
万能检讨书
2015/01/27 职场文书
面试复试通知单
2015/04/24 职场文书
三十年同学聚会感言
2015/07/30 职场文书
导游词之无锡梅园
2019/11/28 职场文书
MySQL分区表实现按月份归类
2021/11/01 MySQL
Win10 最新稳定版本 21H2开始推送
2022/04/19 数码科技