所以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