当存在inf时,np.percentile返回与np.median不同的中位数

时间:2018-12-27 13:33:58

标签: python numpy nan median percentile

当inf值存在于数组中时,在某些条件下,np.percentile可以返回NaN作为中位数,而np.median可以返回一个有限值。

>>> import numpy as np
>>> np.percentile([np.inf, 5, 4], [10, 20, 30, 40, 50, 60, 70, 80, 90])
/Users/tom/miniconda3/envs/alldev/lib/python3.7/site-packages/numpy-1.16.0.dev0+45718fd-py3.7-macosx-10.7-x86_64.egg/numpy/lib/function_base.py:3947: RuntimeWarning: invalid value encountered in multiply
  x2 = take(ap, indices_above, axis=axis) * weights_above
array([4.2, 4.4, 4.6, 4.8, nan, inf, inf, inf, inf])
>>> np.median([np.inf, 5, 4])
5.0

在这种情况下,np.median能够正确返回5.0作为中位数,而np.percentile返回第50个百分位数的NaN。

1 个答案:

答案 0 :(得分:0)

第一个参数是数据,第二个参数是置信区间。您不允许在置信区间中输入非数字

data=[10, 20, 30, 40, 50, 60, 70, 80, 90]
confidence=[5, 4]
results=np.percentile(data,confidence )

print(results)

输出

 array([14. , 13.2])

值 13.2 到 14 将产生 4% 到 5% 的置信区间