NumPy的数学函数是否比Python快?

发布于 2021-01-29 19:25:16

我有一个由基本数学函数(abs,cosh,sinh,exp,…)组合定义的函数。

我不知道是否有差别(速度)来使用,例如, numpy.abs()而不是abs()

关注者
0
被浏览
49
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    计时结果如下:

    lebigot@weinberg ~ % python -m timeit 'abs(3.15)' 
    10000000 loops, best of 3: 0.146 usec per loop
    
    lebigot@weinberg ~ % python -m timeit -s 'from numpy import abs as nabs' 'nabs(3.15)'
    100000 loops, best of 3: 3.92 usec per loop
    

    numpy.abs()abs()它还处理Numpy数组要慢:它包含提供这种灵活性的其他代码。

    但是,Numpy在数组 上的 速度很快:

    lebigot@weinberg ~ % python -m timeit -s 'a = [3.15]*1000' '[abs(x) for x in a]'
    10000 loops, best of 3: 186 usec per loop
    
    lebigot@weinberg ~ % python -m timeit -s 'import numpy; a = numpy.empty(1000); a.fill(3.15)' 'numpy.abs(a)'
    100000 loops, best of 3: 6.47 usec per loop
    

    (PS:'[abs(x) for x in a]'在python 2.7中比慢于慢map(abs, a),后者快约30%,但仍然比NumPy慢得多。)

    因此,numpy.abs()对于1000个元素而言,花费的时间不会比1个单个float花费更多的时间!



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看