擅长:python、mysql、java
<p>切片可能比计算所有的指数要快得多。与其直接使用掩码<code>repelling_force_prefactor</code>进行切片,我建议在索引为非零时预计算索引并将其用于切片:</p>
<pre><code># before the loop
indices = np.nonzero(repelling_force_prefactor)
# inside the loop
repelling_forces = np.exp(-(height_r_t[indices]/potential_steepness))
</code></pre>
<p>现在,<code>repelling_forces</code>将只包含非零的结果。如果必须用此值更新<code>height_r_t</code>的原始形状的某些数组,则可以再次使用<code>indices</code>的切片,或者使用<code>np.put()</code>或类似的函数。在</p>
<p>在这种情况下,使用索引列表进行切片比使用布尔掩码进行切片效率更高,因为索引列表要短1000倍。当然,衡量绩效取决于你自己。在</p>