擅长:python、mysql、java
<p>有一个办法-</p>
<pre><code># data array
In [85]: a = np.array([7, 9, 3, 1, 2, 4, 5, 6, 0, 8])
# percentages (ratios) array
In [86]: p = np.array([0.2,0.6,0.2]) # must sum upto 1
In [87]: np.split(a,(len(a)*p[:-1].cumsum()).astype(int))
Out[87]: [array([7, 9]), array([3, 1, 2, 4, 5, 6]), array([0, 8])]
</code></pre>
<p>替代<code>np.split</code>:</p>
<p><code>np.split</code>在处理大数据时可能会比较慢,因此,我们也可以在那里使用循环-</p>
<pre><code>split_idx = np.r_[0,(len(a)*p.cumsum()).astype(int)]
out = [a[i:j] for (i,j) in zip(split_idx[:-1],split_idx[1:])]
</code></pre>