前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python+numpy实现函数向量化

Python+numpy实现函数向量化

作者头像
Python小屋屋主
发布2018-04-16 12:14:15
3.1K0
发布2018-04-16 12:14:15
举报
文章被收录于专栏:Python小屋Python小屋

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]

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-09-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python小屋 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档