我刚刚开始考虑使用numpy来加速从PIL图像中提取数据。
很明显,当你可以使用numpy运算符时,它与普通的python代码相比非常有利(在我的基准测试中快了大约200倍)。
我预计在numpy数组上的下标比在Python列表上更快,但我发现它的速度大约慢了2倍。我能理解它是一样的,但速度慢让我觉得我做错了。
此基准测试中是否存在文物
import timeit
setup = '''
import numpy
import random
asize = 1000
itrbl = [random.random() for i in range(asize)]
alist = itrbl
npa = numpy.fromiter(itrbl, numpy.float)
'''
np_operator='''
x = npa * 100
'''
np_subscr='''
x = [npa[i]*100 for i in numpy.arange(len(npa))]
'''
pyth_subscr='''
x = [alist[i]*100 for i in range(len(alist))]
'''
print 'numpy operator ', min(timeit.repeat(np_operator, setup, number=1000, repeat=3))
print 'numpy subscripting', min(timeit.repeat(np_subscr, setup, number=1000, repeat=3))
print 'python subscripting', min(timeit.repeat(pyth_subscr, setup, number=1000, repeat=3))