在哪些方面,Numpy的速度反而比不上原始Python

 我来答
就烦条0o
2017-01-08 · 知道合伙人软件行家
就烦条0o
知道合伙人软件行家
采纳数:33315 获赞数:46492
从事多年系统运维,喜欢编写各种小程序和脚本。

向TA提问 私信TA
展开全部
很有意思的结果。我不清楚numpy数组在哪些场合下慢过list,不过纠正一下题主的误解。

python的list实现不是链表,而是动态数组。动态数组append/pop的均摊时间复杂度为O(1),而按下标随机访问跟一般数组无异,时间复杂度严格为O(1)。C++ STL中的vector也是动态数组。当然,从非尾部增删元素也是支持的,虽然慢就是了,应避免。

关于python各种内建类型操作的时间复杂度,可参考TimeComplexity
关于动态数组,可参考Dynamic array

另外numpy数组单个元素随机访问比list慢没啥大不了的,后者是python实现内建,前者还有ffi的开销。numpy快的地方在于可以整向量/整矩阵地做算术运算,中间省了许多开销。你写个list comprehension来用list模拟向量算术,再来跟numpy比,会有质的不同。哪怕没链MKL优化的numpy也能把list爆出翔。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式