Python+numpy实现函数向量化

来源:互联网 发布:lua ide for mac 编辑:程序博客网 时间:2024/06/05 19:25

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
原创粉丝点击