2. 统计量

  1. 这里是共同的参数:

    • a:一个array_like对象

    • axis:可以为为int或者tuple或者None

      • None:将a展平,在整个数组上操作
      • int:在a的指定轴线上操作。如果为-1,表示沿着最后一个轴(0轴为第一个轴)。
      • tuple of ints:在a的一组指定轴线上操作
    • out:可选的输出位置。必须与期望的结果形状相同

    • keepdims:如果为True,则结果数组的维度与原数组相同,从而可以与原数组进行广播运算。

  2. 顺序统计:

    • numpy.minimum(x1, x2[, out]):返回两个数组x1x2对应位置的最小值。要求x1x2形状相同或者广播之后形状相同。
    • numpy.maximum(x1, x2[, out]):返回两个数组x1x2对应位置的最大值。要求x1x2形状相同或者广播之后形状相同。
    • numpy.amin(a[, axis, out, keepdims]) :返回a中指定轴线上的最小值(数组)、或者返回a上的最小值(标量)。
    • numpy.amax(a[, axis, out, keepdims]) :返回a中指定轴线上的最大值(数组)、或者返回a上的最小值(标量)。
    • numpy.nanmin(a[, axis, out, keepdims]): 返回a中指定轴线上的最小值(数组)、或者返回a上的最小值(标量),忽略NaN
    • numpy.nanmax(a[, axis, out, keepdims]) :返回a中指定轴线上的最大值(数组)、或者返回a上的最小值(标量)忽略NaN
    • numpy.ptp(a[, axis, out]) :返回a中指定轴线上的最大值减去最小值(数组),即peak to peak
    • numpy.argmin(a, axis=None, out=None):返回a中指定轴线上最小值的下标
    • numpy.argmax(a, axis=None, out=None):返回a中指定轴线上最大值的下标
    • numpy.percentile(a, q[, axis, out, ...]) :返回a中指定轴线上qth 百分比数据。q=50表示 50% 分位。你可以用列表或者数组的形式一次指定多个 q
    • numpy.nanpercentile(a, q[, axis, out, ...]):返回a中指定轴线上qth 百分比数据。q=50表示 50% 分位。
    • numpy.partition(a, kth, axis=-1, kind='introselect', order=None):它将数组执行划分操作:第 2. 统计量 - 图1 位左侧的数都小于第 2. 统计量 - 图2;第 2. 统计量 - 图3位右侧的数都大于等于第 2. 统计量 - 图4。它返回划分之后的数组
    • numpy.argpartition(a, kth, axis=-1, kind='introselect', order=None):返回执行划分之后的下标(对应于数组划分之前的位置)。 min_max1 min_max2
  3. 排序:

    • numpy.sort(a, axis=-1, kind='quicksort', order=None):返回a在指定轴上排序后的结果(并不修改原数组)。

      • kind:字符串指定排序算法。可以为'quicksort'(快速排序),'mergesort'(归并排序),'heapsort'(堆排序)
      • order:在结构化数组中排序中,用于设置排序的字段(一个字符串)
    • numpy.argsort(a, axis=-1, kind='quicksort', order=None):返回a在指定轴上排序之后的下标(对应于数组划分之前的位置)。

    • numpy.lexsort(keys, axis=-1)

      • 如果keys为数组,则根据数组的最后一个轴的最后一排数值排列,并返回这些轴的排列顺序。如数组ashape=(4,5),则根据a最后一行(对应于最后一个轴的最后一排)的5列元素排列。这里axis指定排序的轴 。对于argsort,会在最后一个轴的每一排进行排列并返回一个与a形状相同的数组。
      • 如果keys为一维数组的元组,则将这些一维数组当作行向量拼接成二维数组并按照数组来操作。
    • numpy.searchsorted(a, v, side='left', sorter=None):要求a是个已排序好的一维数组。本函数将v插入到 a中,从而使得数组a维持一个排序好的数组。函数返回的是v应该插入的位置。side指定若发现数值相等时,插入左侧left还是右侧right

      • 如果你想一次插入多个数值,可以将v设置为列表或者数组。
      • 如果sorter=None,则要求a已排序好。如果a未排序,则要求传入一个一维数组或者列表。这个一维数组或者列表给出了 a的升序排列的下标。(通常他就是argsort的结果)
      • 它并不执行插入操作,只是返回待插入的位置

    sort1 sort2

  4. 均值和方差:

    • numpy.sum(a, axis=None, dtype=None, out=None, keepdims=False):计算a在指定轴上的和

    • numpy.prod(a, axis=None, dtype=None, out=None, keepdims=False):计算a在指定轴上的乘积

    • numpy.median(a[, axis, out, overwrite_input, keepdims]):计算a在指定轴上的中位数(如果有两个,则取这两个的平均值)

    • numpy.average(a[, axis, weights, returned]):计算a在指定轴上的加权平均数

    • numpy.mean(a[, axis, dtype, out, keepdims]) :计算a在指定轴上的算术均值

    • numpy.std(a[, axis, dtype, out, ddof, keepdims]):计算a在指定轴上的标准差

    • numpy.var(a[, axis, dtype, out, ddof, keepdims]) :计算a在指定轴上的方差。方差有两种定义:

      • 偏样本方差biased sample variance。计算公式为 (2. 统计量 - 图9 为均值):

        2. 统计量 - 图10

      • 无偏样本方差unbiased sample variance。计算公式为 (2. 统计量 - 图11 为均值):

        2. 统计量 - 图12

        ddof=0时,计算偏样本方差;当ddof=1时,计算无偏样本方差。默认值为 0。当ddof为其他整数时,分母就是N-ddof

    • numpy.nanmedian(a[, axis, out, overwrite_input, ...]) :计算a在指定轴上的中位数,忽略NaN

    • numpy.nanmean(a[, axis, dtype, out, keepdims]) :计算a在指定轴上的算术均值,忽略NaN

    • numpy.nanstd(a[, axis, dtype, out, ddof, keepdims]):计算a在指定轴上的标准差,忽略NaN

    • numpy.nanvar(a[, axis, dtype, out, ddof, keepdims]) :计算a在指定轴上的方差,忽略NaN

    mean_var

  5. 相关系数:

    • numpy.corrcoef(x[, y, rowvar, bias, ddof]) : 返回皮尔逊积差相关
    • numpy.correlate(a, v[, mode]) :返回两个一维数组的互相关系数
    • numpy.cov(m[, y, rowvar, bias, ddof, fweights, ...]):返回协方差矩阵
  6. 直方图:

    • numpy.unique(ar, return_index=False, return_inverse=False, return_counts=False):返回ar中所有不同的值组成的一维数组。如果ar不是一维的,则展平为一维。

      • return_index:如果为True,则同时返回这些独一无二的数值在原始数组中的下标
      • return_inverse:如果为True,则返回元素数组的值在新返回数组中的下标(从而可以重建元素数组)
      • return_counts:如果为True,则返回每个独一无二的值在原始数组中出现的次数
    • numpy.histogram(a, bins=10, range=None, normed=False, weights=None, density=None):计算一组数据的直方图。如果a不是一维的,则展平为一维。bins指定了统计的区间个数(即统计范围的等分数)。range是个长度为2的元组,表示统计范围的最小值和最大值(默认时,表示范围为数据的最小值和最大值)。当densityFalse时,返回a中数据在每个区间的个数;否则返回a中数据在每个区间的频率。weights设置了a中每个元素的权重,如果设置了该参数,则计数时考虑权重。它返回的是一个元组,第一个元素给出了每个直方图的计数值,第二个元素给出了直方图的统计区间的从左到右的各个闭合点 (比计数值的数量多一个)。

      • normed:作用与density相同。该参数将被废弃
      • bins也可以为下列字符串,此时统计区间的个数将通过计算自动得出。可选的字符串有:'auto''fd''doane''scott''rice''sturges''sqrt'
    • numpy.histogram2d(x, y, bins=10, range=None, normed=False, weights=None) :计算两组数据的二维直方图

    • numpy.histogramdd(sample, bins=10, range=None, normed=False, weights=None) :计算多维数据的直方图

    • numpy.bincount(x[, weights, minlength]):计算每个数出现的次数。它要求数组中所有元素都是非负的。其返回数组中第i个元素表示:整数ix中出现的次数。要求x必须一维数组,否则报错。weights设置了x中每个元素的权重,如果设置了该参数,则计数时考虑权重。minlength指定结果的一维数组最少多长(如果未指定,则由x中最大的数决定)。

    • numpy.digitize(x, bins, right=False) :离散化。如果x不是一维的,则展平为一维。它返回一个数组,该数组中元素值给出了x中的每个元素将对应于统计区间的哪个区间。区间由bins这个一维数组指定,它依次给出了统计区间的从左到右的各个闭合点。rightTrue,则表示统计区间为左开右闭合(];为False,则表示统计区间为左闭合右开[) hist

    注意:matplotlib.pyplot也有一个建立直方图的函数(hist(...)),区别在于matplotlib.pyplot.hist(...)函数会自动绘直方图,而numpy.histogram仅仅产生数据

    hist

    histogram