Python numpy vs列表理解,哪个更快?
我运行了一个简单的速度测试,比较了numpy和python列表理解,显然列表理解更快。对吗Python numpy vs列表理解,哪个更快?,python,numpy,Python,Numpy,我运行了一个简单的速度测试,比较了numpy和python列表理解,显然列表理解更快。对吗 import sys, numpy from datetime import datetime def numpysum(n): a = numpy.arange(n) ** 2 b = numpy.arange(n) ** 3 return a + b def pythonsum(n): a = [i ** 2 for i in range(n)] b = [
import sys, numpy
from datetime import datetime
def numpysum(n):
a = numpy.arange(n) ** 2
b = numpy.arange(n) ** 3
return a + b
def pythonsum(n):
a = [i ** 2 for i in range(n)]
b = [i ** 3 for i in range(n)]
return [a[i] + b[i] for i in range(n)]
size = 10
start = datetime.now()
c1 = pythonsum(size)
delta1 = datetime.now() - start
start = datetime.now()
c2 = numpysum(size)
delta2 = datetime.now() - start
print c1
print c2
print delta1
print delta2
您的
尺寸太小。我再次尝试使用size=1000000
,numpy的理解能力比列表强9倍
我猜测NUMPY有较高的设置开销,但一般来说对于非平凡输入大小(10肯定是微不足道),你可以期望它至少和列表理解一样快,而且在大多数情况下要快得多。
< P>我想你可能会考虑改变你的测试参数:
In [39]: %timeit pythonsum(10)
100000 loops, best of 3: 8.41 us per loop
In [40]: %timeit pythonsum(100)
10000 loops, best of 3: 51.9 us per loop
In [41]: %timeit pythonsum(1000)
1000 loops, best of 3: 451 us per loop
In [42]: %timeit pythonsum(10000)
100 loops, best of 3: 17.9 ms per loop
In [43]: %timeit numpysum(10)
100000 loops, best of 3: 13.4 us per loop
In [44]: %timeit numpysum(100)
100000 loops, best of 3: 17 us per loop
In [45]: %timeit numpysum(1000)
10000 loops, best of 3: 50.3 us per loop
In [46]: %timeit numpysum(10000)
1000 loops, best of 3: 385 us per loop
Numpy与列表理解时间的比率:
10:0.6倍
100:3.1x
1000:9x
10000:46x
因此,对于大型N
,Numpy要快得多