numpy.array 和 array以及list的效率对比

来源:互联网 发布:知其荣守其辱哲学哲理 编辑:程序博客网 时间:2024/06/10 01:26
#coding:utf-8import timeitcommon_for = """for d in data:    s += d"""common_sum = """sum(data)"""common_numpy_sum = """numpy.sum(data)"""def timeit_list(n, loops):    list_setup = """import numpydata = [1] * {0}#生成n个数的列表s = 0""".format(n)    print 'list:'    print timeit.timeit(common_for, list_setup, number = loops)#'common_for'是要执行语句 list_setup导入执行语句需要的数据,loops表示执行语句最后要执行的次数    print timeit.timeit(common_sum, list_setup, number = loops)    print timeit.timeit(common_numpy_sum, list_setup, number = loops)def timeit_array(n, loops):    array_setup = """import numpyimport arraydata = array.array('L', [1] * {0})#unsigned long,这里的初始化必须先给类型s = 0""".format(n)    print 'array:'    print timeit.timeit(common_for, array_setup, number = loops)    print timeit.timeit(common_sum, array_setup, number = loops)    print timeit.timeit(common_numpy_sum, array_setup, number = loops)def timeit_numpy(n, loops):    numpy_setup = """import numpydata = numpy.array([1] * {0})s = 0""".format(n)    print 'numpy:'    print timeit.timeit(common_for, numpy_setup, number = loops)    print timeit.timeit(common_sum, numpy_setup, number = loops)    print timeit.timeit(common_numpy_sum, numpy_setup, number = loops)if __name__ == '__main__':    timeit_list(50000, 500)    timeit_array(50000, 500)    timeit_numpy(50000, 500)

我这里的结果是

list:0.7434018477520.2446816266781.00076942461array:1.838739361131.360518253844.02721759923numpy:3.862116207893.343977394350.0103776763518

所以对于numpy,我们尽量使用它的内置函数吧!