numpy vs list comprehension,哪个更快? [英] numpy vs list comprehension, which is faster?

查看:117
本文介绍了numpy vs list comprehension,哪个更快?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我进行了一个简单的速度测试,比较numpy和python列表理解,显然列表理解更快.正确吗?

I ran a simple speed test comparing numpy and python list comprehension, and apparently list comprehension was faster. Is that correct?

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

推荐答案

我认为您可能需要考虑更改测试参数:

I think you might want to consider varying your testing parameter:

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倍

10: 0.6x

100:3.1x

1000:9倍

10000:46x

10000: 46x

因此,对于大型N,Numpy的速度要快得多.

Thus, Numpy is much faster for large N.

这篇关于numpy vs list comprehension,哪个更快?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆