擅长:python、mysql、java
<p>正如Slater Tyranus所指出的,只有基准KR才会显示任何结果:</p>
<pre><code>import numpy as np
import timeit
def func_a(data):
return np.apply_along_axis(lambda x: np.bincount(x, minlength=data.max()+1), axis=0, arr=data)
def func_b(data):
data_max=data.max()+1
return np.apply_along_axis(lambda x: np.bincount(x, minlength=data_max), axis=0, arr=data)
setup = '''import numpy as np
data=np.array([[1,2,5,4,8,7,8,9,14,8,14,5,2,1],
[5,8,7,13,7,8,9,21,5,7,9,24,3,2]])
from __main__ import func_a, func_b'''
</code></pre>
<blockquote>
<p><code>min(timeit.Timer('func_a(data)', setup=setup).repeat(100,100))</code></p>
<p>0.02922797203063965</p>
<p><code>min(timeit.Timer('func_b(data)', setup=setup).repeat(100,100))</code></p>
<p>0.018524169921875</p>
</blockquote>
<p>我也用更大的数据进行了测试。总的来说,我们可以说,它在计算<code>data_max=data.max()</code>之前是有回报的。数组越大,差异就越大。你知道吗</p>