sign()在python中比matlab慢得多



例如,我在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在这里相当小。)

相关内容

  • 没有找到相关文章

最新更新