例如,我在python中有一个函数,它基本上采用数组(75150)的符号。我来自Matlab,时间执行看起来或多或少和这个函数一样。我想知道sign()是否工作得很慢,并且你知道做同样事情的替代方案。
Thx,
我无法告诉你这比Matlab快还是慢,因为我不知道你在那里看到的是什么数字(你根本没有提供定量数据)。然而,就替代方案而言:
import numpy as np
a = np.random.randn(75, 150)
aSign = np.sign(a)
IPython
:中%timeit
的测试
In [15]: %timeit np.sign(a)
10000 loops, best of 3: 180 µs per loop
因为数组上的循环(以及它内部发生的事情)是用优化的C代码而不是通用的Python代码实现的,所以它的速度往往快一个数量级——与Matlab大致相同。
将与numpy矢量化操作完全相同的代码与Python循环进行比较:
In [276]: %timeit [np.sign(x) for x in a]
1000 loops, best of 3: 276 us per loop
In [277]: %timeit np.sign(a)
10000 loops, best of 3: 63.1 us per loop
所以,这里的速度只有原来的4倍。(但是a
在这里相当小。)