擅长:python、mysql、java
<p>我会使用<code>np.select</code>:</p>
<pre><code>def bound2(arr):
pos_neg = arr>0, arr<0
return (
np.select(pos_neg, (1,MIN),0),
np.select(pos_neg, (MAX,-1),0)
)
</code></pre>
<p>测试时间:</p>
<pre><code># sample data
arr = np.random.randint(-10,10,1000)
%%timeit -n 100
bound(arr)
# 858 µs ± 28.2 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
%%timeit -n 100
bound2(arr)
# 59.9 µs ± 4.45 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
</code></pre>