您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

为什么numpy的array那么快?

2024/3/21 17:49:43发布17次查看
在python numpy中,如果我用10^6长度随机生成的list生成numpy array,那么生成耗时0.1s, 但是得到这个array的mean只需要init的2%的时间。 而我自己implement的array得到mean需要十几秒。
所以numpy的array十分黑科技是应为:
1)用底层代码太厉害?
2)init的时候partially compute了某一些中间量?(应为求mean的时间比access慢,比o(n)快 )
如果是2的话能否讲一下大概思路(不需要用python o(n)就能得mean)?
感激不禁!
回复内容:numpy的许多函数不仅是用c实现了,还使用了blas(一般windows下link到mkl的,linux下link到openblas)。基本上那些blas实现在每种操作上都进行了高度优化,例如使用avx向量指令集,甚至能比你自己用c实现快上许多,更不要说和用python实现的比。。你用blas试试numpy底层使用blas做向量,矩阵运算。像求平均值这种vector operation,很容易使用multi-threading或者vectorization来加速。比如mkl就有很多优化。a=[];s=0;n=1000000from time import*from math import*from random import*st=clock()for i in range(n): a.append(random())for i in a:s=s+iet=clock()print mean=,s/n,time=,et-st,seconds
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product