首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python: math.exp和numpy.exp的区别是什么?为什么numpy创建者选择再次引入exp

Python: math.exp和numpy.exp的区别是什么?为什么numpy创建者选择再次引入exp
EN

Stack Overflow用户
提问于 2015-06-08 22:51:08
回答 3查看 31.6K关注 0票数 27

exp表示指数函数

math module中的exphttps://docs.python.org/2/library/math.html

numpy module中的exphttp://docs.scipy.org/doc/numpy/reference/generated/numpy.exp.html

为什么numpy创建者会再次引入这个函数呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-06-08 22:55:50

正如EdChum提到的,math.exp只适用于标量。而numpy.exp将适用于数组。

示例:

代码语言:javascript
复制
>>> import math
>>> import numpy as np
>>> x = [1.,2.,3.,4.,5.]
>>> math.exp(x)

Traceback (most recent call last):
  File "<pyshell#10>", line 1, in <module>
    math.exp(x)
TypeError: a float is required
>>> np.exp(x)
array([   2.71828183,    7.3890561 ,   20.08553692,   54.59815003,
        148.4131591 ])
>>> 

其他math函数也是如此。

代码语言:javascript
复制
>>> math.sin(x)

Traceback (most recent call last):
  File "<pyshell#12>", line 1, in <module>
    math.sin(x)
TypeError: a float is required
>>> np.sin(x)
array([ 0.84147098,  0.90929743,  0.14112001, -0.7568025 , -0.95892427])
>>> 

另请参考THIS ANSWER,了解numpy如何比math更快。

票数 36
EN

Stack Overflow用户

发布于 2015-06-08 22:59:07

math.exp在单个数字上工作,numpy版本在numpy数组上工作,由于矢量化的好处,它的速度快得多。在这一点上,exp函数并不是唯一的--有几个math函数都有numpy对应物,比如sinpow等。

请考虑以下几点:

代码语言:javascript
复制
In [10]: import math

In [11]: import numpy

In [13]: arr = numpy.random.random_integers(0, 500, 100000)

In [14]: %timeit numpy.exp(arr)
100 loops, best of 3: 1.89 ms per loop

In [15]: %timeit [math.exp(i) for i in arr]
100 loops, best of 3: 17.9 ms per loop

numpy版本的速度提高了约9倍(通过仔细选择优化的数学库,可能还会更快)

正如@camz下面所述- math版本在处理单个值时会更快(在快速测试中,速度快约7.5倍)。

票数 8
EN

Stack Overflow用户

发布于 2019-02-02 22:53:20

如果使用map手动向量化math.exp,它会比numpy更快。就我所测试的..。

%timeit np.exp(arr)

500µs±3.37µs /环路(平均值±标准dev.共7次运行,每次1000次循环)

%timeit映射(math.exp,arr)

每环148 ns±4 ns (平均值±标准dev.共7次运行,每次10000000次循环)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30712402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档