python 映射函数_Python-在numpy数组上映射函数的最有效方法

小编典典

我测试过的所有建议的方法,加上np.array(map(f, x))与perfplot(我的一个小项目)。

消息1:如果可以使用numpy的本机函数,请执行此操作。

如果你想已经矢量化功能的矢量(如x**2在原岗位的例子),使用的是多比什么都更快(注意对数标度):

如果你确实需要向量化,那么使用哪种变体并不重要。

复制剧情的代码:

import numpy as np

import perfplot

import math

def f(x):

# return math.sqrt(x)

return np.sqrt(x)

vf = np.vectorize(f)

def array_for(x):

return np.array([f(xi) for xi in x])

def array_map(x):

return np.array(list(map(f, x)))

def fromiter(x):

return np.fromiter((f(xi) for xi in x), x.dtype)

def vectorize(x):

return np.vectorize(f)(x)

def vectorize_without_init(x):

return vf(x)

perfplot.show(

setup=lambda n: np.random.rand(n),

n_range=[2**k for k in range(20)],

kernels=[

f,

array_for, array_map, fromiter, vectorize, vectorize_without_init

],

xlabel='len(x)',

)

2020-02-16

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值