遍历numpy数组的最快方法是什么

遍历numpy数组的最快方法是什么,第1张

遍历numpy数组的最快方法是什么

这些是我在较慢的机器上的时间

In [1034]: timeit [i for i in np.arange(10000000)]1 loop, best of 3: 2.16 s per loop

如果我直接生成范围(Py3,这是一个生成器),则时间要好得多。以此为基础的列表理解此大小。

In [1035]: timeit [i for i in range(10000000)]1 loop, best of 3: 1.26 s per loop

tolist
首先将范围转换为列表;需要更长的时间,但迭代仍在列表中

In [1036]: timeit [i for i in np.arange(10000000).tolist()]1 loop, best of 3: 1.6 s per loop

使用

list()
-与直接迭代数组相同的时间;这表明直接迭代首先要做到这一点。

In [1037]: timeit [i for i in list(np.arange(10000000))]1 loop, best of 3: 2.18 s per loopIn [1038]: timeit np.arange(10000000).tolist()1 loop, best of 3: 927 ms per loop

同时在.tolist上进行迭代

In [1039]: timeit list(np.arange(10000000))1 loop, best of 3: 1.55 s per loop

通常,如果必须循环,则处理列表的速度更快。访问列表元素更简单。

查看通过索引返回的元素。

a[0]
是另一个
numpy
对象;它是根据中的值构造的
a
,而不仅仅是获取的值

list(a)[0]
是同一类型;列表只是
[a[0], a[1], a[2]]]

In [1043]: a = np.arange(3)In [1044]: type(a[0])Out[1044]: numpy.int32In [1045]: ll=list(a)In [1046]: type(ll[0])Out[1046]: numpy.int32

tolist
会将数组转换为纯列表(在这种情况下为int列表)。它比做更多的工作
list()
,但是在编译后的代码中做。

In [1047]: ll=a.tolist()In [1048]: type(ll[0])Out[1048]: int

通常不要使用

list(anarray)
。它很少做任何有用的事情,并且功能不如
tolist()

遍历数组的最快方法是什么-无。至少不是在Python中;在C代码中有快速的方法。

a.tolist()
是从数组创建列表整数的最快矢量化方法。它会迭代,但是会在已编译的代码中进行迭代。

但是您的真正目标是什么?



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5674871.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-16
下一篇2022-12-17

发表评论

登录后才能评论

评论列表(0条)

    保存