np.percentile函数全面解析

发布时间:2023-05-19

一、np.percentile函数

在数据分析中,我们常常需要了解数据的分布情况,知道数据在何种程度上占比较高或较低,np.percentile()函数就能够帮助我们实现这一需求。 np.percentile(a, q, axis=None, out=None) 其中,a表示需要计算的数据,q表示求解的分位数,axis表示需要计算的数据的轴向,out表示可选参数。

二、np.percentile函数用法

np.percentile函数主要用于计算数据在不同百分位数的值,例如,想知道一组数据在90%的百分位数处的值,就可以这样写:

import numpy as np
data = np.array([1,2,3,4,5,6,7,8,9,10])
np.percentile(data, 90)

输出结果为 9.1。 需要注意的是,np.percentile函数中的 q 参数是一个数组,即可以计算多个分位数,并返回对应结果:

np.percentile(data, [20, 50, 80])

输出结果为 array([2.8, 5.5, 8.2])

三、np.percentile 计算原理

要理解np.percentile函数的计算原理,需要先了解“分位数”的概念,分位数是指将所有数按大小顺序排序后,按照百分数的大小,将其分为100份,每份的数据量即为1%。其中,中位数就是50%的分位数。 np.percentile函数在计算分位数时,采用向下取整的方式计算。例如,计算数据在50%百分位数上的值,如果总数据数量为n,那么就找到排序后位置为 n/2 的数据,这就是50%分位数。

四、np.percentile函数怎么用

np.percentile函数可以应用于各种数据分析的场景,例如,可以用于计算数据集的平均数、中位数、众数、四分位数等。在金融、医疗等领域,也可用于分析数据分布,评估数据提取效率。

五、np.percentile()函数超详解

np.percentile函数功能强大,具有很多可选参数:

  1. axis 参数表示对数据的哪个维度进行计算,默认值为 None,表示计算整个数据的分位数;
  2. out 参数表示计算结果输出的位置,默认值为 None,表示直接返回结果;
  3. interpolation 参数表示计算分位数时使用的插值方式,默认为 linear(线性插值),还可以选择 lower(向下取整)、higher(向上取整)、nearest(离值最近的整数)的插值方法。 举个例子,计算一个3D张量数据的80%分位数:
data = np.random.rand(4,5,6)
np.percentile(data, 80, axis=(0,1))

输出结果为一个长度为6的向量。

六、np.percentile函数超详解

在图像处理中,np.percentile函数也有很好的应用,可以实现多种图像处理的功能,例如对图像的亮度调整、图像的对比度增强等。下面举一个图像亮度调整的例子:

import matplotlib.pyplot as plt
import skimage.data
image = skimage.data.astronaut()
p3, p97 = np.percentile(image, (3, 97))
image_rescale = exposure.rescale_intensity(image, in_range=(p3, p97))
fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(8, 5), sharex=True, sharey=True)
ax = axes.ravel()
ax[0].imshow(image, cmap='gray')
ax[0].set_title('Before')
ax[1].imshow(image_rescale, cmap='gray')
ax[1].set_title('After')
fig.tight_layout()
plt.show()

上面的代码将一张宇航员照片进行了亮度调整,输出结果为一个子图,左边为原图,右边为调整后的图。

七、np.percentile函数语法

总体来说,np.percentile函数的语法简单而又灵活。 np.percentile(a, q, axis=None, out=None) 在使用时需要确定好计算的数据、需要计算的分位数、计算的轴向、输出结果的位置等参数,具体使用可以根据自己的需求灵活选择。