调用方法:
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
选择插值方式的原因了。
对于上述对应的图像,如下图所示: