这里的时候发现的点积如此之快:为什么是它np.dot比使用使用np.dot for循环
import numpy as np
import timeit
x = np.random.random(size=10**7)
a = np.ones(x.size)
%time np.dot(x, a)
墙时间:11毫秒
5001679.267011214
这里是时间使用for循环:
import numpy as np
import timeit
x = np.random.random(size=10**7)
a = np.ones(x.size)
def innfeldi(vigur1, vigur2):
return sum([vigu1[i]*vigur2[i] for i in range(len(vigur1))])
%timeit innfeldi(x, a)
墙时间:4.78小号
4998161.0032265792
,请复制粘贴文本,而不是截图 – Eric
'for'循环是Python代码,'np.dot'是c代码。 –
'''np.dot()'''使用[BLAS](https://en.wikipedia.org/wiki/Basic_Linear_Algebra_Subprograms)(如果可用),它对SIMD指令和高速缓存进行了大量优化。它实际上是更多的Fortran代码,而不是这里提到的C。 – sascha