擅长:python、mysql、java
<p>首先需要将所有小于平均值的值向右折叠,使分布对称化。然后您可以在此单面分布上使用标准<code>scipy.stats</code>函数:</p>
<pre><code>from scipy.stats import scoreatpercentile
import numpy as np
theList = np.log10(1+np.arange(.1, 100))
theMedian = np.median(theList)
oneSidedList = theList[:] # copy original list
# fold over to the right all values left of the median
oneSidedList[theList < theMedian] = 2*theMedian - theList[theList < theMedian]
# find the 70th centile of the one-sided distribution
a = scoreatpercentile(oneSidedList, 70) - theMedian
#check how many elements fall into the range
sel = (theList > (theMedian - a)) * (theList < (theMedian + a))
print np.sum(sel) / float(len(theList))
</code></pre>
<p>这将根据需要给出<code>0.7</code>的结果。在</p>