擅长:python、mysql、java
<p>我在这里提供了一些反馈作为答案,只是不想把问题搞砸。所以我对各种函数做了计时测试,结果发现在这种情况下,通过布尔掩码赋值是最快的变体(hpaulj的答案)。<code>np.where</code>慢了1.4倍,而{<cd2>}慢了15倍。出于好奇,我想用循环来测试这一点,所以我设计了一个测试算法:</p>
<pre><code>AR1 = numpy.zeros((rows, cols), dtype = numpy.uint32)
while d <= 100:
Buf = numpy.zeros_like(AR1)
r = 0
c = 0
while (r < rows) :
while (c < cols) :
temp = AR1[r, c] + 1
if temp > 5 :
Buf[r, c] = 1
else : Buf[r, c] = temp
c += 1
r += 1
c = 0
AR1 = Buf
d += 1
</code></pre>
<p>我不确定,但似乎所有上述功能的实现都非常简单。但它太慢了,几乎慢了300倍。我读过类似的问题,但还是不明白,为什么会这样?到底是什么导致了经济放缓。在这里,我特意设置了一个缓冲区,以避免对同一个元素执行读写函数,并且不进行内存清理。所以还有什么可以更简单的,我很困惑。不想打开一个新的问题,因为它已经被问了几次,所以可能有人会提出意见或有良好的链接澄清这一点?在</p>