我在python中有一个函数,它基本上采用了数组(75,150)的符号。 我来自Matlab,时间执行看起来或多或少与此功能相同。 我想知道sign()是否工作得很慢,你知道另一种做法。
THX,
答案 0 :(得分:1)
我无法告诉你这是否比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
在这里很小。)