numpy.percentile

原文:https://docs.scipy.org/doc/numpy/reference/generated/numpy.percentile.html

译者:飞龙 UsyiyiCN

校对:(虚位以待)

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

沿指定轴计算数据的第q个百分位数。

返回数组元素的第q个百分位数。

参数:

a:array_like

输入可以转换为数组的数组或对象。

q:浮动范围为[0,100](或浮点数)

要计算的百分比,必须介于0和100之间(包括0和100)。

axis:{int,int,None},可选

沿着其计算百分位数的轴或轴。默认值是计算沿数字组的扁平版本的百分位数。自版本1.9.0起,支持一系列轴。

out:ndarray,可选

用于放置结果的替代输出数组。它必须具有与预期输出相同的形状和缓冲区长度,但如果需要,将转换类型(输出)。

overwrite_input:bool,可选

如果为True,则允许使用输入数组a的计算。输入数组将通过调用percentile进行修改。当您不需要保留输入数组的内容时,这将节省内存。在这种情况下,你不应该对该函数完成后输入a的内容做任何假设 - 将其视为未定义。默认值为False。如果a不是数组,则此参数将不起作用,因为a将在内部转换为数组,而不考虑此参数的值。

插值:{'linear','lower','higher','midpoint','nearest'}

这个可选参数指定当期望的分位数位于两个数据点之间时使用的插值方法i j

  • linear: i + (j - i) * fraction, where fraction is the fractional part of the index surrounded by i and j.
  • 低:i
  • 高:j
  • 最近:ij,取最近者。
  • 中点:(i + j) / 2 t0 >。

版本1.9.0中的新功能。

keepdims:bool,可选

如果设置为True,则缩小的轴在结果中保留为尺寸为1的尺寸。使用此选项,结果将针对原始数组a正确广播

版本1.9.0中的新功能。

返回:

百分位:标量或ndarray

如果q是单个百分点并且axis = None,则结果是标量。如果给出多个百分位数,则结果的第一轴对应于百分位数。其他轴是缩小a后保留的轴。如果输入包含小于float64的整数或浮点数,则输出数据类型为float64否则,输出数据类型与输入的类型相同。如果指定out,则返回该数组。

也可以看看

meanmediannanpercentile

笔记

Given a vector V of length N, the q-th percentile of V is the value q/100 of the way from the mimumum to the maximum in in a sorted copy of V. The values and distances of the two nearest neighbors as well as the interpolation parameter will determine the percentile if the normalized ranking does not match the location of q exactly. 如果q=50,则该函数与中值相同,如果q=0与最小值相同,并且如果q=100

例子

>>> 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, axis=0)
array([[ 6.5,  4.5,  2.5]])
>>> np.percentile(a, 50, axis=1)
array([ 7.,  2.])
>>> np.percentile(a, 50, axis=1, keepdims=True)
array([[ 7.],
       [ 2.]])
>>> m = np.percentile(a, 50, axis=0)
>>> out = np.zeros_like(m)
>>> np.percentile(a, 50, axis=0, out=out)
array([[ 6.5,  4.5,  2.5]])
>>> m
array([[ 6.5,  4.5,  2.5]])
>>> b = a.copy()
>>> np.percentile(b, 50, axis=1, overwrite_input=True)
array([ 7.,  2.])
>>> assert not np.all(a == b)