sign()在python中比matlab慢得多?

时间:2013-08-19 19:19:51

标签: python sign benchmarking

我在python中有一个函数,它基本上采用了数组(75,150)的符号。 我来自Matlab,时间执行看起来或多或少与此功能相同。 我想知道sign()是否工作得很慢,你知道另一种做法。

THX,

1 个答案:

答案 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在这里很小。)