擅长:python、mysql、java
<p>与另一个答案相比,解决这个问题的一个更为“<em>numpythonic</em>”的方法是-</p>
<pre><code>np.concatenate(np.repeat(np.split(a, np.cumsum(chunks))[:-1], repeats))
</code></pre>
<pre><code>array([ 0, 1, 2, 10, 11, 10, 11, 10, 11, 20, 21, 22, 23, 20, 21, 22, 23])
</code></pre>
<p>请注意,<em>没有显式for循环</em></p>
<p>(<code>np.split</code>有一个隐式循环,正如@Divakar所指出的)</p>
<hr/>
<p>编辑:基准测试(MacBookPro 13)-</p>
<p>正如@Mad Physicast在他的帖子中指出的,Divakar的解决方案对于更大的阵列、块和重复来说可以更好地扩展</p>
<p><a href="https://i.stack.imgur.com/TiuSb.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/TiuSb.png" alt="enter image description here"/></a></p>