所以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 = 1000000 from time import * from math import * from random import * st = clock () for i in range ( n ): a . append ( random ()) for i in a : s = s + i et = clock () print "mean=" , s / n , "time=" , et - st , "seconds"
查看更多关于为什么numpy的array那么快?的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did89729