Python+numpy实现函数向量化

Python本身对向量操作的支持并不是很好,需要借助列表推导式或函数式编程来实现,例如:

>>> import random

# 生成随机测试数据

>>> x = random.sample(range(1000), 5)
>>> y = random.sample(range(1000), 5)

# 列表推导式,模拟向量减法

>>> [vecX-vecY for vecX, vecY in zip(x,y)]
[-171, -370, -66, 282, 231]

# 列表推导式,模拟向量减法

>>> f = lambda a, b: a-b
>>> [f(a,b) for a, b in zip(x,y)]
[-171, -370, -66, 282, 231]

# 函数式编程,map,模拟向量加法

>>> list(map(lambda a, b: a+b, x, y))
[1067, 488, 1486, 998, 327]

Python扩展库numpy本身提供的大量函数都具有向量化的特点,并且可以把普通的Python函数向量化,可以使得Python操作向量更方便:
>>> import numpy as np

# 定义一个普通的减法函数
>>> def sub(a, b): return a-b

# 把减法函数向量化

>>> vecSub = np.vectorize(sub)
>>> print(vecSub(x,y))
[-171 -370  -66  282  231]

# 把加法lambda表达式向量化

>>> vecAdd = np.vectorize(lambda a, b: a+b)
>>> print(vecAdd(x,y))
[1067  488 1486  998  327]

----------喜大普奔----------

1、继《Python程序设计基础》《Python程序设计(第2版)》《Python可以这样学》系列图书之后,董付国老师新书《Python程序设计开发宝典》已于2017年8月1日在清华大学出版社出版。为庆祝新书《Python程序设计开发宝典》全面上架,清华大学出版社联合“赣江图书专营”淘宝店推出特价优惠活动,《Python程序设计开发宝典》原价69元,新书上架期间超低价39.8元,可以复制下面的链接使用浏览器打开查看图书详情和购买:

https://detail.tmall.com/item.htm?spm=a1z10.3-b-s.w4011-14464369246.84.46f16db0roWfX4&id=557107249812&rn=339cbc9df2bac424664103917dedfbd2&abbucket=8&tbpm=3

2、10月13日——15日,重庆,全国高校程序设计系列课程高级研究班,详见:全国高校程序设计系列课程高级研修班(Python)通知

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dongfuguo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值