numpy 数组比列表快吗?

Are numpy arrays faster than lists?

我刚开始使用 python 和 numpy arrays.While 我在网上浏览笔记,看到有人提到 ndarray 比列表更快..

"NumPy arrays are stored at one continuous place in memory unlike lists, so processes can access and manipulate them very efficiently."

所以我尝试在地图上使用 timeit,其中 sqr 将 list

中的每个元素作为根
from timeit import timeit
timeit(stmt='import math;a_list = list(range(1,100000));list(map(math.sqrt,a_list))',number=1000)

8.955352897006378

and timeit on a map which sqr roots each element in a numpy

timeit(stmt='import numpy as np;import math;np_array=np.array(range(1,100000));list(map(math.sqrt,np_array))',number=1000)

24.691162549999717

没有意义,列表似乎更快

在您的代码中引入 numpy 意味着引入另一种思考问题的方式。

numpy 通常在创建阶段更昂贵,但矢量计算速度非常快。

我认为这或多或少就是您要搜索的内容

timeit(stmt='list(map(math.sqrt,a_list))', setup='import math; a_list = list(range(1,100000))',number=1000)
#8.64

对比:

timeit(stmt='numpy.sqrt(a_list)', setup='import numpy; a_list = numpy.arange(100000)',number=1000)
#0.4

这些是timeit的结果,只应用于计算部分。我的意思是,计算 sqrt 并忽略导入库的时间。