对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 相关文章推荐
CentOS 7下安装Python 3.5并与Python2.7兼容并存详解
Jul 07 Python
Python使用numpy实现BP神经网络
Mar 10 Python
更换Django默认的模板引擎为jinja2的实现方法
May 28 Python
python实现文本界面网络聊天室
Dec 12 Python
基于Python实现签到脚本过程解析
Oct 25 Python
python3 requests库实现多图片爬取教程
Dec 18 Python
利用keras加载训练好的.H5文件,并实现预测图片
Jan 24 Python
python 连续不等式语法糖实例
Apr 15 Python
python模拟斗地主发牌
Apr 22 Python
python连接mysql有哪些方法
Jun 24 Python
python try...finally...的实现方法
Nov 25 Python
Pycharm创建python文件自动添加日期作者等信息(步骤详解)
Feb 03 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
最小化数据传输――在客户端存储数据
2006/10/09 PHP
php 数组排序 array_multisort与uasort的区别
2011/03/24 PHP
PHP基于Redis消息队列实现发布微博的方法
2017/05/03 PHP
PHP手机短信验证码实现流程详解
2018/05/17 PHP
PHP类的自动加载机制实现方法分析
2019/01/10 PHP
javascript来定义类的规范小结
2010/11/19 Javascript
jQuery 选择表格(table)里的行和列及改变简单样式
2012/12/15 Javascript
Jquery easyui 下loaing效果示例代码
2013/08/12 Javascript
javascript使用call调用微信API
2014/12/15 Javascript
VS2008中使用JavaScript调用WebServices
2014/12/18 Javascript
再谈JavaScript异步编程
2016/01/27 Javascript
javascript HTML+CSS实现经典橙色导航菜单
2016/02/16 Javascript
JavaScript html5 canvas绘制时钟效果
2016/03/01 Javascript
AngularJs Understanding the Controller Component
2016/09/02 Javascript
Javascript网页抢红包外挂实现分享
2018/01/11 Javascript
如何从0开始用node写一个自己的命令行程序
2018/12/29 Javascript
webpack HappyPack实战详解
2019/10/08 Javascript
从零开始用webpack构建一个vue3.0项目工程的实现
2020/09/24 Javascript
[00:47]TI7不朽珍藏III——沙王不朽展示
2017/07/15 DOTA
Python使用Socket(Https)Post登录百度的实现代码
2012/05/18 Python
python益智游戏计算汉诺塔问题示例
2014/03/05 Python
python3简单实现微信爬虫
2015/04/09 Python
PyQt5 QSerialPort子线程操作的实现
2018/04/21 Python
实用自动化运维Python脚本分享
2018/06/04 Python
用Pycharm实现鼠标滚轮控制字体大小的方法
2019/01/15 Python
使用python脚本自动创建pip.ini配置文件代码实例
2019/09/20 Python
python通用读取vcf文件的类(复制粘贴即可用)
2020/02/29 Python
Python Json数据文件操作原理解析
2020/05/09 Python
python3 os进行嵌套操作的实例讲解
2020/11/19 Python
Python datetime模块的使用示例
2021/02/02 Python
Pycharm 跳转回之前所在页面的操作
2021/02/05 Python
计算机网络及管理学专业求职信
2014/06/05 职场文书
党员个人剖析材料2014
2014/10/08 职场文书
环境建议书
2015/02/04 职场文书
会议营销主持词
2015/07/03 职场文书
防止web项目中的SQL注入
2021/12/06 MySQL