一系列浮点数的百分位数
Percentile of a range of floating points
我正在编写一个函数,它接受一个浮点数列表并打印出浮点数的 'pth' 个百分位数:
from scipy import stats
def print_percentiles(a, p):
for i in p:
print('The ', i, 'th percentile is ', stats.scoreatpercentile(a, i), '.', sep='')
print_percentiles([1, 1, 3, 6, 2], [50])
# The 50th percentile is 2.0.
print_percentiles(range(1, 21), [75, 25])
# The 75th percentile is 15.25.
# The 25th percentile is 5.75.
第一次测试得到了正确的输出,但是当函数的第一个参数是数字范围 (1, 21) 时,输出不正确,应该是:
第 75 个百分位数是 15.0。
第 25 个百分位数是 5.0。
为什么函数在这种情况下产生错误的输出?
只需使用所需的 interpolation_method='lower'
,因为这不是 documentation.
中描述的默认值
from scipy import stats
def print_percentiles(a, p):
for i in p:
print('The ', i, 'th percentile is ', stats.scoreatpercentile(a, i, interpolation_method='lower'), '.', sep='')
print_percentiles([1, 1, 3, 6, 2], [50])
# The 50th percentile is 2.0.
print_percentiles(range(1, 21), [75, 25])
结果:
The 50th percentile is 2.0.
The 75th percentile is 15.0.
The 25th percentile is 5.0.
我正在编写一个函数,它接受一个浮点数列表并打印出浮点数的 'pth' 个百分位数:
from scipy import stats
def print_percentiles(a, p):
for i in p:
print('The ', i, 'th percentile is ', stats.scoreatpercentile(a, i), '.', sep='')
print_percentiles([1, 1, 3, 6, 2], [50])
# The 50th percentile is 2.0.
print_percentiles(range(1, 21), [75, 25])
# The 75th percentile is 15.25.
# The 25th percentile is 5.75.
第一次测试得到了正确的输出,但是当函数的第一个参数是数字范围 (1, 21) 时,输出不正确,应该是:
第 75 个百分位数是 15.0。
第 25 个百分位数是 5.0。
为什么函数在这种情况下产生错误的输出?
只需使用所需的 interpolation_method='lower'
,因为这不是 documentation.
from scipy import stats
def print_percentiles(a, p):
for i in p:
print('The ', i, 'th percentile is ', stats.scoreatpercentile(a, i, interpolation_method='lower'), '.', sep='')
print_percentiles([1, 1, 3, 6, 2], [50])
# The 50th percentile is 2.0.
print_percentiles(range(1, 21), [75, 25])
结果:
The 50th percentile is 2.0.
The 75th percentile is 15.0.
The 25th percentile is 5.0.