numpy.nanpercentile¶
-
numpy.
nanpercentile
(a, q, axis=None, out=None, overwrite_input=False, interpolation='linear', keepdims=<class numpy._globals._NoValue>)[source]¶ 沿着指定轴计算数据的第q个百分位数,而忽略nan值。
返回数组元素的第q个百分位数。
版本1.9.0中的新功能。
参数: 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
, wherefraction
is the fractional part of the index surrounded byi
andj
. - 低:
i
。 - 高:
j
。 - 最近:
i
或j
,取最近者。 - 中点:
(i + j) / 2 t0 >。
keepdims:bool,可选
返回: 百分位:标量或ndarray
如果q是单个百分点并且axis = None,则结果是标量。如果给出多个百分位数,则结果的第一轴对应于百分位数。其他轴是缩小a后保留的轴。如果输入包含小于
float64
的整数或浮点数,则输出数据类型为float64
。否则,输出数据类型与输入的类型相同。如果指定out,则返回该数组。也可以看看
笔记
Given a vector
V
of lengthN
, theq
-th percentile ofV
is the valueq/100
of the way from the mimumum to the maximum in in a sorted copy ofV
. 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 ofq
exactly. 如果q=50
,则该函数与中值相同,如果q=0
与最小值相同,并且如果q=100
例子
>>> a = np.array([[10., 7., 4.], [3., 2., 1.]]) >>> a[0][1] = np.nan >>> a array([[ 10., nan, 4.], [ 3., 2., 1.]]) >>> np.percentile(a, 50) nan >>> np.nanpercentile(a, 50) 3.5 >>> np.nanpercentile(a, 50, axis=0) array([ 6.5, 2., 2.5]) >>> np.nanpercentile(a, 50, axis=1, keepdims=True) array([[ 7.], [ 2.]]) >>> m = np.nanpercentile(a, 50, axis=0) >>> out = np.zeros_like(m) >>> np.nanpercentile(a, 50, axis=0, out=out) array([ 6.5, 2., 2.5]) >>> m array([ 6.5, 2. , 2.5])
>>> b = a.copy() >>> np.nanpercentile(b, 50, axis=1, overwrite_input=True) array([ 7., 2.]) >>> assert not np.all(a==b)
- linear: