Numpy已针对大量数据进行了优化。给它一个很小的3长度数组,毫不奇怪,它的性能很差。
考虑单独的测试
import timeitreps = 100pythonTest = timeit.Timer('a = [0.] * 1000000')numpyTest = timeit.Timer('a = numpy.zeros(1000000)', setup='import numpy')uninitialised = timeit.Timer('a = numpy.empty(1000000)', setup='import numpy')# empty simply allocates the memory. Thus the initial contents of the array # is random noiseprint 'python list:', pythonTest.timeit(reps), 'seconds'print 'numpy array:', numpyTest.timeit(reps), 'seconds'print 'uninitialised array:', uninitialised.timeit(reps), 'seconds'输出是
python list: 1.22042918205 secondsnumpy array: 1.05412316322 secondsuninitialised array: 0.0016028881073 seconds
似乎是数组的归零一直花费在numpy上。因此,除非您需要初始化数组,否则请尝试使用empty。



