您当前的位置:首页 > 计算机 > 编程开发 > Python

Python+numpy实现函数向量化

时间:12-27来源:作者:点击数:

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]

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门