numpy.nanpercentile

numpy.nanpercentile(a, q, axis=None, out=None, overwrite_input=False, interpolation='linear', keepdims=<no value>)[源代码]

沿指定轴计算数据的qth百分位数,同时忽略NaN值。

返回数组元素的qth百分位数。

1.9.0 新版功能.

参数
aarray_like

可转换为数组的输入数组或对象,其中包含要忽略的NaN值。

q浮点数数组

要计算的百分位数或百分位数序列,必须介于0和100之间(含0和100)。

axisint,int的元组,none,可选

计算百分位的轴。默认值是沿着数组的扁平版本计算百分位数。

outndarray,可选

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

overwrite_input可选的布尔

如果为真,则允许输入数组 a 通过中间计算进行修改,以节省内存。在这种情况下,输入的内容 a 此函数完成后未定义。

interpolation'线性'、'低'、'高'、'中点'、'最近'

此可选参数指定当所需百分比位于两个数据点之间时要使用的插值方法 i < j

  • “线性”: i + (j - i) * fraction 在哪里 fraction 索引的小数部分是否被 ij .

  • “下”: i .

  • “更高”: j .

  • “最近”: ij ,以最近者为准。

  • “中点”: (i + j) / 2 .

keepdims可选的布尔

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

如果这不是默认值,它将通过(在空数组的特殊情况下)传递给 mean 基础数组的函数。如果数组是子类并且 mean 没有Kwarg keepdims 这将引发运行时错误。

返回
percentile标量或ndarray

如果 q 是一个百分位数 axis=None ,则结果是一个标量。如果给出多个百分位数,则结果的第一个轴对应于百分位数。其他轴是在减少 a . 如果输入包含小于 float64 ,输出数据类型为 float64 . 否则,输出数据类型与输入数据类型相同。如果 out 则返回该数组。

参见

nanmean
nanmedian

相当于 nanpercentile(..., 50)

percentile, median, mean
nanquantile

相当于NanPercentile,但Q在范围内 [0, 1] .

笔记

给定向量 V 长度的 N , the q -第百分位数 V 是价值 q/100 从最小值到最大值的排序方式 V . 两个最近邻的值和距离以及 interpolation 如果标准化排名与 q 确切地。此函数与中值if相同 q=50 ,与最小的if相同 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.0
>>> 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)