擅长:python、mysql、java
<p>解决这个问题的一种方法是使用递归:</p>
<pre><code>def find_fix_point_recursive(f, x):
ind = x > 0.1
if ind.any():
x[ind] = find_fix_point_recursive(f, f(x[ind]))
return x
</code></pre>
<p>在这个实现中,我们只在需要更新的点上调用<code>f</code>。你知道吗</p>
<p>注意,通过使用递归,我们避免了每次调用都要在越来越小的数组上进行检查<code>x > 0.1</code>。你知道吗</p>
<pre><code>%timeit x = np.zeros(10000); x[0] = 10000; find_fix_point(f, x)
1000 loops, best of 3: 1.04 ms per loop
%timeit x = np.zeros(10000); x[0] = 10000; find_fix_point_recursive(f, x)
10000 loops, best of 3: 141 µs per loop
</code></pre>