Ka-*_*Yip 22 python arrays numpy
exp 指指数函数
exp在math module:https://docs.python.org/2/library/math.html
exp在numpy module:http://docs.scipy.org/doc/numpy/reference/generated/numpy.exp.html
为什么numpy创作者会再次引入此功能?
The*_*tor 28
这些math.exp作品仅适用于EdChum提到的标量.然而,numpy.exp它将适用于数组.
例:
>>> 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功能也是如此.
>>> 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])
>>> 
另请参阅此答案以了解如何numpy更快math.
math.exp在单个数字上工作,numpy版本适用于numpy数组,并且由于矢量化的好处而非常快.该exp功能不单单是这一点-几个math函数有numpy的同行,如sin,pow等.
考虑以下:
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倍).