对numpy中向量式三目运算符详解

 更新时间:2018年10月31日 14:32:28   作者:grey_csdn  
今天小编就为大家分享一篇对numpy中向量式三目运算符详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

如果用到数据筛选功能,可以使用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中向量式三目运算符详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • selenium+opencv实现滑块验证码的登陆

    selenium+opencv实现滑块验证码的登陆

    很多网站登录登陆时都要用到滑块验证码,本文主要介绍了selenium+opencv实现滑块验证码的登陆,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • 高质量Python代码编写的5个优化技巧

    高质量Python代码编写的5个优化技巧

    这篇文章主要为大家详细介绍了编写高质量Python代码的5个优化技巧,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • Python3标准库之functools管理函数的工具详解

    Python3标准库之functools管理函数的工具详解

    functools模块提供的主要工具就是partial类,可以用来“包装”一个有默认参数的callable对象。这篇文章主要介绍了Python3标准库functools管理函数的工具的实例详解,需要的朋友可以参考下
    2020-02-02
  • Pandas中字符串和时间转换与格式化的实现

    Pandas中字符串和时间转换与格式化的实现

    本文主要介绍了Pandas中字符串和时间转换与格式化的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • Django框架视图函数设计示例

    Django框架视图函数设计示例

    这篇文章主要介绍了Django框架视图函数设计,结合实例形式分析了Django框架视图函数处理流程、原理与相关操作注意事项,需要的朋友可以参考下
    2019-07-07
  • Python+Opencv身份证号码区域提取及识别实现

    Python+Opencv身份证号码区域提取及识别实现

    这篇文章主要介绍了Python+Opencv身份证号码区域提取及识别实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • 在Linux上安装Python的Flask框架和创建第一个app实例的教程

    在Linux上安装Python的Flask框架和创建第一个app实例的教程

    这篇文章主要介绍了在Linux上安装Python的Flask框架和创建第一个app实例,包括创建一个HTML模版和利用Jinja2模板引擎来做渲染的步骤,需要的朋友可以参考下
    2015-03-03
  • wxpython学习笔记(推荐查看)

    wxpython学习笔记(推荐查看)

    wxPython是Python编程语言的一个GUI工具箱。他使得Python程序员能够轻松的创建具有健壮、功能强大的图形用户界面的程序
    2014-06-06
  • Python 读取 YUV(NV12) 视频文件实例

    Python 读取 YUV(NV12) 视频文件实例

    今天小编就为大家分享一篇Python 读取 YUV(NV12) 视频文件实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • Python列表的深复制和浅复制示例详解

    Python列表的深复制和浅复制示例详解

    这篇文章主要给大家介绍了关于Python列表的深复制和浅复制的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02

最新评论