调用方法:
numpy.percentile(a, q, axis=None, out=None, overwrite_input=False, interpolation='linear', keepdims=False)各个参数意义
a:输入数组,或者一些能够被转换为数组的 q:百分数,应该介于0到100之间 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选择插值方式的原因了。
对于上述对应的图像,如下图所示:
