例如,我在 python 中有一个函数,它基本上采用数组 (75,150) 的符号。我来自Matlab,时间执行看起来或多或少相同,而不是这个函数。我想知道 sign() 是否工作得非常缓慢,并且您知道另一种方法可以做到这一点。
谢谢,
例如,我在 python 中有一个函数,它基本上采用数组 (75,150) 的符号。我来自Matlab,时间执行看起来或多或少相同,而不是这个函数。我想知道 sign() 是否工作得非常缓慢,并且您知道另一种方法可以做到这一点。
谢谢,
我不能告诉你这比 Matlab 快还是慢,因为我不知道你在那里看到了什么数字(你根本没有提供定量数据)。但是,就替代方案而言:
import numpy as np
a = np.random.randn(75, 150)
aSign = np.sign(a)
使用%timeit
in 进行测试IPython
:
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
这里很小。)