我只是想弄清楚为什么我的程序如此缓慢并找到以下结果。
In [11]: n = 1000000
In [12]: x = randn(n)
In [13]: %timeit norm(x)
100 loops, best of 3: 2.25 ms per loop
In [14]: %timeit (x.dot(x))**0.5
1000 loops, best of 3: 387 µs per loop
我知道norm
函数会包含许多if else
检测输入并选择正确的norm
。但我仍然想知道这个巨大的差异,特别是在调用循环时。
这是正常的numpy?
另一个例子是从randn
计算10000x10000随机生成矩阵的特征值和特征向量。首先,我使用Matlab计算并在几分钟内得到结果。但numpy花了很长时间来计算这个,最后我 Ctrl + c 这个过程。两者分别使用eig
函数。