numpy.percentile()函数

调用方法:

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

各个参数意义

a:输入数组,或者一些能够被转换为数组的
q:百分数,应该介于0100之间
axis:(可选参数)决定沿着哪一个轴计算百分数,默认将数组扁平化以后再计算百分数。具体坐标轴设定用法同numpy.ptp()函数。这里不做过多讨论。
有返回值,返回值为一个元组类型的索引数组,即得到 非零元素在原数组中的下标
out:(可选参数)输出数组,要求它必须具有相同的形状和缓冲区长度,所以一般来说可以不进行指定。(这里不做过多讨论),简而言之一点,numpy模块中的所有函数中的out参数一般不进行指定。
overwrite_input:(可选参数)当为True的时候会将原始数组进行中间计算,简而言之,就是计算完成后销毁原始数组,原始数组就会成为未被定义的状态,这个参数仅仅在数据量非常大的时候才考虑被使用,为了节省内存,一般不做考虑。
interpolation:有{‘linear’, ‘lower’, ‘higher’, ‘midpoint’, ‘nearest’}五种可选参数,不同种的插值方式,可以自行百度,这里不做深入说明,以后可能会做补充。
keepdims:(True or False,选填参数),用法同numpy.ptp()函数。这里不做过多讨论。
有返回值,返回一个数组或者标量

代码如下:

# -*- coding: utf-8 -*-
"""
Created on Thu Oct 22 10:17:36 2020

@author: 15025
"""

import numpy as np


class NumpyStudy:
    def calculatePercentile(self):
        array = np.array([1, 2, 3, 4, 5])
        array1 = np.percentile(array, 0)
        array2 = np.percentile(array, 25)
        array3 = np.percentile(array, 50)
        array4 = np.percentile(array, 75)
        array5 = np.percentile(array, 100)
        print("array1的值为: ")
        print(array1)
        print("array2的值为: ")
        print(array2)
        print("array3的值为: ")
        print(array3)
        print("array4的值为: ")
        print(array4)
        print("array5的值为: ")
        print(array5)
        
        
if __name__ == "__main__":
    main = NumpyStudy()
    main.calculatePercentile()
"""
array1的值为: 
1.0
array2的值为: 
2.0
array3的值为: 
3.0
array4的值为: 
4.0
array5的值为: 
5.0
"""

我们从结果中可以看到,这里其实是将数组np.array([1, 2, 3, 4, 5])按照百分比分别对应于0%25%50%75%100%。相当于我们做了一条直线,这时我们如果想要知道这条直线上其他位置的数值,因为原始数据中没有,所以会进行插值运算,这也是为什么参数中会存在interpolation选择插值方式的原因了。

对于上述对应的图像,如下图所示:
percentile figure

猜你喜欢

转载自blog.csdn.net/u011699626/article/details/109225333