擅长:python、mysql、java
<p>这应该是正确的方法,对于任意数量的任何大小的拆分(不只是四个)(只要它们加起来等于1):</p>
<pre><code>def percentage_split(seq, percentages):
assert sum(percentages) == 1.0
prv = 0
size = len(seq)
cum_percentage = 0
for p in percentages:
cum_percentage += p
nxt = int(cum_percentage * size)
yield seq[prv:nxt]
prv = nxt
</code></pre>
<p>(这是一个生成函数,您可以得到四分位列表,如下所示:</p>
^{pr2}$
<p>)</p>
<p>如果您安装了numpy,它可以更简洁一点:</p>
<pre><code>from numpy import cumsum
def percentage_split(seq, percentages):
cdf = cumsum(percentages)
assert cdf[-1] == 1.0
stops = map(int, cdf * len(seq))
return [seq[a:b] for a, b in zip([0]+stops, stops)]
</code></pre>
<p>如果你只想要四个相等的四分位数。。。在</p>
<pre><code>numpy.split(seq, 4)
</code></pre>