zsh2270365028的个人博客分享 http://blog.sciencenet.cn/u/zsh2270365028

博文

[转载]np.percentile用法详解

已有 3862 次阅读 2021-11-23 15:48 |个人分类:Python|系统分类:科研笔记|文章来源:转载

refer to:https://blog.csdn.net/qq_35542289/article/details/106440606

np.percentile用来计算一组数的百分位数,其中50%分位数就是中位数。函数文档如下

其余的参数我们都忽略,重点来看interpolation。从代码中我们可以知道np.percentile默认使用的是linear即线性插值的方式来计算百分位数。从文档对interpolation的解释来看,不论哪种计算方式都会涉及到i、j注意:i、j是值,不是下标。那么接下来就介绍i、j如何计算:

  1. 首先对数组进行从小到大的排序例如a = [4, 2, 1, 3] 排序之后 a = [1, 2, 3, 4]

  2. 然后计算位置loc = 1 + (n - 1) * p 。其中n是数组长度;p为百分位数0 <= p <= 1,例如p = 0.95 表示95%分位数;loc表示百分位数是数组中的第几个元素,例如loc = 3.0表示百分位数是数组中第3个元素其下标是2注意:在Python中如果 p 为浮点数则最终结果为浮点数。

  3. loc小数部分不为零则i = a[loc整数部分 - 1]j = a[loc整数部分];若loc为整数或小数部分为零则i = j = 百分位数 = a[loc整数部分 - 1]

代码示例

下面介绍线性插值法计算百分位数

  1. loc为整数或小数部分为零,则a[loc整数部分 - 1]即为百分位数。

  2. loc小数部分非零,例如2.4则表示百分位数是数组中第2.4个元素,此时百分位数的计算公式如下:a[loc整数部分 - 1] + (a[loc整数部分] - a[loc整数部分 - 1]) * loc小数部分i + (j - i) * loc小数部分。以2.4为例:第2.4个元素在第二和第三个元素之间即a[1]a[2]之间,所以结果为a[1] + (a[2] - a[1]) * 0.4.

例1

解析:

  1. 首先对a进行排序得到[1, 3, 5, 7, 9]

  2. 然后计算位置loc = 1 + (5 - 1) * 0.3 = 2.2表示30%分位数为第数组中第2.2个元素

  3. 因为2.2小数部分非零,所以百分位数计算公式为:a[1] + (a[2] - a[1]) * 0.2 = 3 + (5 - 3) * 0.2 = 3.4

例2

解析:

  1. 首先对a进行排序得到[1, 3, 5, 7, 9]

  2. 然后计算位置loc = 1 + (5 - 1) * 0.5 = 3.0表示50%分位数为第数组中第3个元素

  3. 因为3.0小数部分为零所以百分位数为a[3 - 1]a[2],结果是5




https://blog.sciencenet.cn/blog-587102-1313629.html

上一篇:[转载]Python取整及保留小数操作
下一篇:[转载]怎样在Python快速创建有序整数数组
收藏 IP: 119.78.226.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-12-28 23:47

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部