擅长:python、mysql、java
<p>我使用以下方法将运行时间缩短了约30%:</p>
<pre><code>def avail_array(lengths):
out = np.zeros((365, len(lengths)))
for i in range(int(len(lengths))):
out[int(lengths[i]):, i] = 1
return out
</code></pre>
<ul>
<li><p>您的版本:</p>
<blockquote>
<p>41 µs ± 734 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)</p>
</blockquote></li>
<li><p>此版本:</p>
<blockquote>
<p>28.2 µs ± 353 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)</p>
</blockquote></li>
</ul>
<p>这可能只是随机长度选择的一个怪癖,但至少不使用<code>0*len(lengths[i])</code>,使用<code>np.ones(...)</code>或<code>np.zeros(...)</code>而不是<code>1 + np.zeros(...)</code>是一个好的开始。你知道吗</p>