<p>不知道你想做什么,但把numpy标记作为一个指标。Numpy在编译代码中运行其内部循环,因此比使用显式Python循环快得多</p>
<pre><code>import numpy as np
world = np.zeros( ( 500, 500 ) )
world[:] = 42
def test( world, v ):
for r, row in enumerate( world ):
for c, col in enumerate( row ):
world[ r, c ] = v
test( world, 42 )
%timeit world[:] = 42
# %timeit 110 µs ± 1.58 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
%timeit test( world, 43 )
# 69.9 ms ± 1.1 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
</code></pre>
<p>如果您需要计算,如果可以在numpy中定义,这些计算也可以快得多</p>
<pre><code>weight = np.arange( 500 )/250
def test_loop( world, weight ):
w = world.copy()
for r, row in enumerate( world ):
for c, col in enumerate( row ):
w[ r, c ] *= weight[c]
return w
test_loop( world, weight )
def test_np( world, weight ):
w = world.copy()
return world * weight
np.isclose( test_loop( world, weight ),test_np( world, weight )).all()
# True # The two results are equivalent.
%timeit test_np( world, weight )
# 754 µs ± 1.71 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
%timeit test_loop( world, weight )
# 172 ms ± 3.62 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
</code></pre>
<p>正如一些评论所暗示的那样。这取决于生成<code>newValue</code>所需的计算。考虑到计算时间的潜在改进,可能值得为您的应用程序探索numpy</p>