task08 统计相关

次序统计

计算最小值
numpy.amin(a[, axis=None, out=None, keepdims=np._NoValue, initial=np._NoValue, where=np._NoValue]) Return the minimum of an array or minimum along an axis.

import numpy as np
x = np.array([[11, 12, 13, 14, 15],
[16, 17, 18, 19, 20],
[21, 22, 23, 24, 25],
[26, 27, 28, 29, 30],
[31, 32, 33, 34, 35]])
y = np.amin(x)
print(y) # 11
y = np.amin(x, axis=0)
print(y) # [11 12 13 14 15]
y = np.amin(x, axis=1)
print(y) # [11 16 21 26 31]

计算最大值
numpy.amax(a[, axis=None, out=None, keepdims=np._NoValue, initial=np._NoValue,where=np._NoValue]) Return the maximum of an array or maximum along an axis.

计算极差
numpy.ptp(a, axis=None, out=None, keepdims=np._NoValue) Range of values (maximum -minimum) along an axis. The name of the function comes from the acronym for ‘peak to peak’.

计算分位数
numpy.percentile(a, q, axis=None, out=None, overwrite_input=False, interpolation=‘linear’, keepdims=False)
Compute the q-th percentile of the data along the specified axis. Returns the q-th percentile(s) of the array elements.

a:array,用来算分位数的对象,可以是多维的数组。
q:介于0-100的float,用来计算是几分位的参数,如四分之一位就是25,如要算两个位置的数就[25,75]。
axis:坐标轴的方向,一维的就不用考虑了,多维的就用这个调整计算的维度方向,取值范围0/1。

计算分位数详解

计算中位数
numpy.median(a, axis=None, out=None, overwrite_input=False, keepdims=False) Compute the median along the specified axis. Returns the median of the array elements.
计算平均值
numpy.mean(a[, axis=None, dtype=None, out=None, keepdims=np._NoValue)]) Compute the arithmetic mean along the specified axis.

计算加权平均值
numpy.average(a[, axis=None, weights=None, returned=False]) Compute the weighted average along the specified axis.
mean 和average 都是计算均值的函数,在不指定权重的时候average 和mean 是一样的。指定权重后, average 可以计算加权平均值。
【例】计算加权平均值(将各数值乘以相应的权数,然后加总求和得到总体值,再除以总的单位数。)

import numpy as np
x = np.array([[11, 12, 13, 14, 15],
[16, 17, 18, 19, 20],
[21, 22, 23, 24, 25],
[26, 27, 28, 29, 30],
[31, 32, 33, 34, 35]])
y = np.average(x)
print(y) # 23.0
y = np.average(x, axis=0)
print(y) # [21. 22. 23. 24. 25.]
y = np.average(x, axis=1)
print(y) # [13. 18. 23. 28. 33.]
y = np.arange(1, 26).reshape([5, 5])
print(y)
# [[ 1 2 3 4 5]
# [ 6 7 8 9 10]
# [11 12 13 14 15]
# [16 17 18 19 20]
# [21 22 23 24 25]]
z = np.average(x, weights=y)
print(z) # 27.0
z = np.average(x, axis=0, weights=y)
print(z)
# [25.54545455 26.16666667 26.84615385 27.57142857 28.33333333]
z = np.average(x, axis=1, weights=y)
print(z)
# [13.66666667 18.25 23.15384615 28.11111111 33.08695652]

计算方差
numpy.var(a[, axis=None, dtype=None, out=None, ddof=0, keepdims=np._NoValue]) Compute the variance along the specified axis.
ddof=0:是“Delta Degrees of Freedom”,表示*度的个数。
要注意方差和样本方差的无偏估计,方差公式中分母上是n ;样本方差无偏估计公式中分母上是n‐1 ( n 为样本个数)。

计算标准差
numpy.std(a[, axis=None, dtype=None, out=None, ddof=0, keepdims=np._NoValue]) Compute the standard deviation along the specified axis.
标准差是一组数据平均值分散程度的一种度量,是方差的算术平方根。

计算协方差矩阵
numpy.cov(m, y=None, rowvar=True, bias=False, ddof=None, fweights=None,aweights=None)
Estimate a covariance matrix, given data and weights.

计算相关系数
numpy.corrcoef(x, y=None, rowvar=True, bias=np._NoValue, ddof=np._NoValue) Return Pearson product-moment correlation coefficients.

理解了np.cov() 函数之后,很容易理解np.correlate() ,二者参数几乎一模一样。

np.cov() 描述的是两个向量协同变化的程度,它的取值可能非常大,也可能非常小,这就导致没法直观地衡量二者协同变化的程度。相关系数实际上是正则化的协方差, n 个变量的相关系数形成一个n 维方阵。

直方图
numpy.digitize(x, bins, right=False) Return the indices of the bins to which each value in input array belongs.
x:numpy数组
bins:一维单调数组,必须是升序或者降序
right:间隔是否包含最右
返回值:x在bins中的位置。

import numpy as np
x = np.array([0.2, 6.4, 3.0, 1.6])
bins = np.array([0.0, 1.0, 2.5, 4.0, 10.0])
inds = np.digitize(x, bins)
print(inds) # [1 4 3 2]
for n in range(x.size):
print(bins[inds[n] ‐ 1], "<=", x[n], "<", bins[inds[n]])
# 0.0 <= 0.2 < 1.0
# 4.0 <= 6.4 < 10.0
# 2.5 <= 3.0 < 4.0
# 1.0 <= 1.6 < 2.5

数学基础较弱,,,水一期

上一篇:python-数据分析-(5)numpy常用操作


下一篇:HTTP 学习教程