对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获取GY-85九轴模块信息示例
Dec 05 Python
Python注释详解
Jun 01 Python
Python中不同进制的语法及转换方法分析
Jul 27 Python
Django数据库操作的实例(增删改查)
Sep 04 Python
纯python实现机器学习之kNN算法示例
Mar 01 Python
Python iter()函数用法实例分析
Mar 17 Python
Flask Web开发入门之文件上传(八)
Aug 17 Python
python微信公众号之关注公众号自动回复
Oct 25 Python
numpy数组广播的机制
Jul 12 Python
Python列表切片常用操作实例解析
Mar 10 Python
Python xml、字典、json、类四种数据类型如何实现互相转换
May 27 Python
python语言是免费还是收费的?
Jun 15 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生成随机数或者字符串的代码
2008/09/05 PHP
PHP中把对象转换为关联数组代码分享
2015/04/09 PHP
PHP封装的HttpClient类用法实例
2015/06/17 PHP
php生成Android客户端扫描可登录的二维码
2016/05/13 PHP
PHP获取数组中指定的一列实例
2017/12/27 PHP
thinkphp5 migrate数据库迁移工具
2018/02/20 PHP
PHP实现的多维数组去重操作示例
2018/07/21 PHP
Javascript attachEvent传递参数的办法
2009/12/14 Javascript
Extjs在exlipse中设置自动提示的方法
2010/04/07 Javascript
jQuery UI Dialog 创建友好的弹出对话框实现代码
2012/04/12 Javascript
javascript简单事件处理和with用法介绍
2013/09/16 Javascript
jquery与prototype框架的详细对比
2013/11/21 Javascript
CSS+JS实现点击文字弹出定时自动关闭DIV层菜单的方法
2015/05/12 Javascript
jQuery实现tab选项卡效果的方法
2015/07/08 Javascript
js和jquery分别验证单选框、复选框、下拉框
2015/12/17 Javascript
iscroll.js滚动加载实例详解
2017/07/18 Javascript
Vue-cli创建项目从单页面到多页面的方法
2017/09/20 Javascript
使用JS实现图片轮播的实例(前后首尾相接)
2017/09/21 Javascript
angular中不同的组件间传值与通信的方法
2017/11/04 Javascript
基于webpack4.X从零搭建React脚手架的方法步骤
2018/12/23 Javascript
JavaScript继承与聚合实例详解
2019/01/22 Javascript
浅谈ECMAScript 中的Array类型
2019/06/10 Javascript
Javascript实现秒表计时游戏
2020/05/27 Javascript
[00:13]天涯墨客二技能展示
2018/08/25 DOTA
Python中用于去除空格的三个函数的使用小结
2015/04/07 Python
Python合并多个装饰器小技巧
2015/04/28 Python
python3.x提取中文的正则表达式示例代码
2019/07/23 Python
pandas 对日期类型数据的处理方法详解
2019/08/08 Python
Python如何用wx模块创建文本编辑器
2020/06/07 Python
matplotlib更改窗口图标的方法示例
2021/02/03 Python
传统HTML页面实现模块化加载的方法
2018/10/15 HTML / CSS
Bergfreunde丹麦:登山装备网上零售商
2017/02/26 全球购物
建筑工地质量标语
2014/06/12 职场文书
2015大学迎新晚会主持词
2015/07/16 职场文书
CSS3 制作的悬停缩放特效
2021/04/13 HTML / CSS
Python使用scapy模块发包收包
2021/05/07 Python