NumPy的实用函数整理之percentile

本文详细介绍了NumPy库中的percentile()函数,该函数用于计算数组元素的指定百分位数。文章通过实例展示了如何在不同维度上计算单个或多个百分位数,并解释了各种插值方法的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

NumPy的实用函数整理之percentile

NumPy函数percentile()用于计算指定维度上数组元素的第 n 个百分位数,返回值为标量或者数组。

percentile()

percentile(a, q, axis=None, out=None,overwrite_input=False, interpolation='linear', keepdims=False)

其中参数
a:numpy数组,待求分位数的数组,或者可以被转换为numpy数组的数据结构。
q:numpy数组或者百分位数,必须在0到100之间。
axis:索要求分位数的维度,默认None是所有数中求出分位数,axis=0是按列求分位数,axis=1是按行求分位数。
out:结果输出到某个变量,该变量必须有与返回结果相同的维度。
overwrite_input:布尔值,是否允许覆盖输入,默认为False。
interpolation : {‘linear’, ‘lower’, ‘higher’, ‘midpoint’, ‘nearest’},此可选参数指定要使用的插值方法,当所需百分比位于两个数据点之间时使用i<j

  • ‘linear’: i + (j - i) * fraction,fraction介于0.5到1之间
  • ‘lower’: i
  • ‘higher’: j
  • ‘nearest’: i or j, 最近原则.
  • ‘midpoint’: (i + j) / 2.

keepdims : 布尔值,默认为False,如果设置为True,那么输出就会与输入数组a保持相同的维度。

函数返回值:

标量或者numpy数组。如果q是单个百分位数和axis = none,则结果返回标量。如果给出了多个百分比,则返回多个分位数或分位数组。

举例如下:

输入:

a = np.array([[10, 7, 4], [3, 2, 1]])
a

输出:

array([[10,  7,  4],
      [ 3,  2,  1]])

例一:

输入:

np.percentile(a, 50)

输出:

3.5

例二:

输入:

np.percentile(a, [50,90])

输出:

array([3.5, 8.5])

例三:
输入:

np.percentile(a, 50, axis=0)

输出:

array([6.5, 4.5, 2.5])

输入:

np.percentile(a, [50,90], axis=0)

输出

array([[6.5, 4.5, 2.5],
       [9.3, 6.5, 3.7]])

例四:
输入:

np.percentile(a, 50, axis=0).shape

输出:

(3,)

输入:

np.percentile(a, 50, axis=0, keepdims=True).shape

输出:

(1, 3)

例五:
输入:

        import matplotlib.pyplot as plt

        a = np.arange(4)
        p = np.linspace(0, 100, 6001)
        ax = plt.gca()
        lines = [
            ('linear', None),
            ('higher', '--'),
            ('lower', '--'),
            ('nearest', '-.'),
            ('midpoint', '-.'),
        ]
        for interpolation, style in lines:
            ax.plot(
                p, np.percentile(a, p, interpolation=interpolation),
                label=interpolation, linestyle=style)
        ax.set(
            title='Interpolation methods for list: ' + str(a),
            xlabel='Percentile',
            ylabel='List item returned',
            yticks=a)
        ax.legend()
        plt.show()

输出:
![在这里插入图片描述](https://img-blog.csdnimg.cn/8a022f3eafe34c8cbaf2a7048a88d90a.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5a2m5Lmg54ix5aW96ICFZno=,size_17,color_FFFFFF,t_70,g_se,x_16 #pic_center)

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值