对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计算最大优先级队列实例
Dec 18 Python
Python程序设计入门(4)模块和包
Jun 16 Python
python学习数据结构实例代码
May 11 Python
Python读取指定目录下指定后缀文件并保存为docx
Apr 23 Python
python实现SOM算法
Feb 23 Python
python smtplib模块自动收发邮件功能(一)
May 22 Python
Python获取昨天、今天、明天开始、结束时间戳的方法
Jun 01 Python
python根据txt文本批量创建文件夹
Dec 08 Python
python 实现返回一个列表中出现次数最多的元素方法
Jun 11 Python
python sklearn库实现简单逻辑回归的实例代码
Jul 01 Python
Python flask框架如何显示图像到web页面
Jun 03 Python
python怎么判断模块安装完成
Jun 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
广播爱好者需要了解的天线知识
2021/03/01 无线电
php调用mysql存储过程
2007/02/14 PHP
php 模拟 asp.net webFrom 按钮提交事件实例
2014/10/13 PHP
PHP中ajax无刷新上传图片与图片下载功能
2017/02/21 PHP
thinkphp查询,3.X 5.0方法(亲试可行)
2017/06/17 PHP
Laravel学习教程之request validation的编写
2017/10/25 PHP
解决Laravel 不能创建 migration 的问题
2019/10/09 PHP
用js实现手把手教你月入万刀(转贴)
2007/11/07 Javascript
jQuery.ajax 用户登录验证代码
2010/10/29 Javascript
Javascript改变CSS样式(局部和全局)
2013/12/18 Javascript
JavaScript学习小结(一)——JavaScript入门基础
2015/09/02 Javascript
浏览器检测JS代码(兼容目前各大主流浏览器)
2016/02/21 Javascript
Bootstrap选项卡动态切换效果
2016/11/28 Javascript
javascript中new Array()和var arr=[]用法区别
2017/12/01 Javascript
jQuery实现简单的下拉菜单导航功能示例
2017/12/07 jQuery
[03:00]2018完美盛典_最佳英雄奖
2018/12/17 DOTA
python网络编程学习笔记(四):域名系统
2014/06/09 Python
Python3.x对JSON的一些操作示例
2017/09/01 Python
python使用pil进行图像处理(等比例压缩、裁剪)实例代码
2017/12/11 Python
Python实现扣除个人税后的工资计算器示例
2018/03/26 Python
Pycharm 2020年最新激活码(亲测有效)
2020/09/18 Python
阿迪达斯西班牙官方网站:adidas西班牙
2016/07/21 全球购物
戴森西班牙官网:Dyson西班牙
2020/02/04 全球购物
Burt’s Bees英国官网:世界领先的天然个人护理品牌
2020/08/17 全球购物
将一个数的从第5位开始的7个数取出,其余位置0
2016/05/26 面试题
城市轨道专业个人求职信范文
2013/09/23 职场文书
网络工程师个人的自我评价范文
2013/10/01 职场文书
弄虚作假心得体会
2014/09/10 职场文书
单位一把手群众路线四风问题整改措施
2014/09/25 职场文书
2015年办公室人员工作总结
2015/05/15 职场文书
毕业实习证明范本
2015/06/16 职场文书
2015年全民创业工作总结
2015/07/23 职场文书
企业安全隐患排查治理制度
2015/08/05 职场文书
《有余数的除法》教学反思
2016/02/22 职场文书
redis实现排行榜功能
2021/05/24 Redis
Java实现聊天机器人完善版
2021/07/04 Java/Android