在哪些方面,Numpy的速度反而比不上原始Python
展开全部
很有意思的结果。我不清楚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爆出翔。
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爆出翔。
2018-08-03
深圳中宇视通科技有限公司
深圳中宇视通科技有限公司,专业生产液晶拼接屏,监视器,广告机,查询机,触摸一体机,微信打印广告机,户外定制广告机,定制显示端产品,欢迎来公司考察指导,期待跟您的合作!
向TA提问
关注
展开全部
numpy的数组,共享内存都是给大量数据计算用的. 比python原来的list, dict要好用. 所以原则上, 只要做科学计算 , numpy性能都比python好. 不过如果是小量数据计算, 用numpy可能不是很方便. python里速度首先还是取决于算法. 其次是取决于, 你的包...
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询