三、函数库
1、随机函数库
1 RandomState类
类式用法主要使用numpy.random.RandomState
类,它是一个Mersenne Twister
伪随机数生成器的容器。它提供了一些方法来生成各种各样概率分布的随机数。
构造函数:RandomState(seed)
。其中seed
可以为None
, int
, array_like
。这个seed
是初始化伪随机数生成器。如果seed
为None
,则RandomState
会尝试读取/dev/urandom
或者Windows analogure
来读取数据,或用者clock
来做种子。
RandomState
保证了通过使用同一个seed
以及同样参数的方法序列调用会产生同样的随机数序列(除了浮点数精度上的区别)。
RandomState
提供了一些方法来产生各种分布的随机数。这些方法都有一个共同的参数size
。
- 如果
size
为None
,则只产生一个随机数 - 如果
size
为一个整数,则产生一个一维的随机数数组。 - 如果
size
为一个元组,则生成一个多维的随机数数组。其中数组的形状由元组指定。
2 生成随机数的方法
.bytes(length)
:等效于numpy.random.bytes(...)
函数.choice(a[, size, replace, p])
:等效于numpy.random.choice(...)
函数.rand(d0, d1, ..., dn)
:等效于numpy.random.rand(...)
函数.randint(low[, high, size])
:等效于numpy.random.randint(...)
函数.randn(d0, d1, ..., dn)
:等效于numpy.random.randn(...)
函数.random_integers(low[, high, size])
:等效于numpy.random_integers.bytes(...)
函数.random_sample([size])
:等效于numpy.random.random_sample(...)
函数.tomaxint([size])
:等效于numpy.random.tomaxint(...)
函数
3 排列组合的方法
.shuffle(x)
:等效于numpy.random.shuffle(...)
函数.permutation(x)
:等效于numpy.random.permutation(...)
函数
4、指定概率分布函数的方法
.beta(a, b[, size])
:等效于numpy.random.beta(...)
函数.binomial(n, p[, size])
:等效于numpy.random.binomial(...)
函数.chisquare(df[, size])
:等效于numpy.random.chisquare(...)
函数.dirichlet(alpha[, size])
:等效于numpy.random.dirichlet(...)
函数.exponential([scale, size])
:等效于numpy.random.exponential(...)
函数.f(dfnum, dfden[, size])
:等效于numpy.random.f(...)
函数.gamma(shape[, scale, size])
:等效于numpy.random.gamma(...)
函数.geometric(p[, size])
:等效于numpy.random.geometric(...)
函数.gumbel([loc, scale, size])
:等效于numpy.random.gumbel(...)
函数.hypergeometric(ngood, nbad, nsample[, size])
:等效于numpy.random.hypergeometric(...)
函数.laplace([loc, scale, size])
:等效于numpy.random.laplace(...)
函数.logistic([loc, scale, size])
:等效于numpy.random.logistic(...)
函数.lognormal([mean, sigma, size])
:等效于numpy.random.lognormal(...)
函数.logseries(p[, size])
:等效于numpy.random.logseries(...)
函数.multinomial(n, pvals[, size])
:等效于numpy.random.multinomial(...)
函数.multivariate_normal(mean, cov[, size])
:等效于numpy.random.multivariate_normal(...)
函数.negative_binomial(n, p[, size])
:等效于numpy.random.negative_binomial(...)
函数.noncentral_chisquare(df, nonc[, size])
:等效于numpy.random.noncentral_chisquare(...)
函数.noncentral_f(dfnum, dfden, nonc[, size])
:等效于numpy.random.noncentral_f(...)
函数.normal([loc, scale, size])
:等效于numpy.random.normal(...)
函数.pareto(a[, size])
:等效于numpy.random.pareto(...)
函数 -. poisson([lam, size])
:等效于numpy.random.poisson(...)
函数.power(a[, size])
:等效于numpy.random.power(...)
函数.rayleigh([scale, size])
:等效于numpy.random.rayleigh(...)
函数.standard_cauchy([size])
:等效于numpy.random.standard_cauchy(...)
函数.standard_exponential([size])
:等效于numpy.random.standard_exponential(...)
函数.standard_gamma(shape[, size])
:等效于numpy.random.standard_gamma(...)
函数.standard_normal([size])
:等效于numpy.random.standard_normal(...)
函数.standard_t(df[, size])
:等效于numpy.random.standard_t(...)
函数.triangular(left, mode, right[, size])
:等效于numpy.random.triangular(...)
函数.uniform([low, high, size])
:等效于numpy.random.uniform(...)
函数.vonmises(mu, kappa[, size])
:等效于numpy.random.vonmises(...)
函数.wald(mean, scale[, size])
:等效于numpy.random.wald(...)
函数.weibull(a[, size])
:等效于numpy.random.weibull(...)
函数.zipf(a[, size])
:等效于numpy.random.zipf(...)
函数
5.类式的其他函数
-
seed(seed=None)
:该方法在RandomState
被初始化时自动调用,你也可以反复调用它从而重新设置伪随机数生成器的种子。 -
get_state()
:该方法返回伪随机数生成器的内部状态。其结果是一个元组(str, ndarray of 624 uints, int, int, float)
,依次为:- 字符串
'MT19937'
- 一维数组,其中是624个无符号整数
key
- 一个整数
pos
- 一个整数
has_gauss
- 一个浮点数
cached_gaussian
- 字符串
-
set_state(state)
:该方法设置伪随机数生成器的内部状态,如果执行成功则返回None
。参数是个元组(str, ndarray of 624 uints, int, int, float)
,依次为:- 字符串
'MT19937'
- 一维数组,其中是624个无符号整数
key
- 一个整数
pos
- 一个整数
has_gauss
- 一个浮点数
cached_gaussian
- 字符串
-
set_state(state)
:该方法设置伪随机数生成器的内部状态,如果执行成功则返回None
。参数是个元组(str, ndarray of 624 uints, int, int, float)
,依次为:- 字符串
'MT19937'
- 一维数组,其中是624个无符号整数
key
- 一个整数
pos
- 一个整数
has_gauss
- 一个浮点数
cached_gaussian
- 字符串
1.统计量
统计量是一个作用在样本空间上的函数。
1、共同参数
-
a
:一个array_like
对象 -
axis
:可以为为int
或者tuple
或者None
:None
:将a
展平,在整个数组上操作int
:在a
的指定轴线上操作。如果为-1
,表示沿着最后一个轴(0轴为第一个轴)。tuple of ints
:在a
的一组指定轴线上操作
-
out
:可选的输出位置。必须与期望的结果形状相同 -
keepdims
:如果为True
,则结果数组的维度与原数组相同,从而可以与原数组进行广播运算。 -
顺序统计:
numpy.minimum(x1, x2[, out])
:返回两个数组x1
和x2
对应位置的最小值。要求x1
和x2
形状相同或者广播之后形状相同。numpy.maximum(x1, x2[, out])
:返回两个数组x1
和x2
对应位置的最大值。要求x1
和x2
形状相同或者广播之后形状相同。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)
:它将数组执行划分操作:第 位左侧的数都小于第 ;第 位右侧的数都大于等于第 。它返回划分之后的数组numpy.argpartition(a, kth, axis=-1, kind='introselect', order=None)
:返回执行划分之后的下标(对应于数组划分之前的位置)。
2、排序
-
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
为数组,则根据数组的最后一个轴的最后一排数值排列,并返回这些轴的排列顺序。如数组a
的shape=(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
的结果) - 它并不执行插入操作,只是返回待插入的位置。
- 如果你想一次插入多个数值,可以将
3. 均值和方差
-
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
在指定轴上的方差。方差有两种定义: -
-
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
-
-
4、相关系数
numpy.corrcoef(x[, y, rowvar, bias, ddof])
: 返回皮尔逊积差相关numpy.correlate(a, v[, mode])
:返回两个一维数组的互相关系数numpy.cov(m[, y, rowvar, bias, ddof, fweights, ...])
:返回协方差矩阵
直方图:
-
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的元组,表示统计范围的最小值和最大值(默认时,表示范围为数据的最小值和最大值)。当density
为False
时,返回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
个元素表示:整数i
在x
中出现的次数。要求x
必须一维数组,否则报错。weights
设置了x
中每个元素的权重,如果设置了该参数,则计数时考虑权重。minlength
指定结果的一维数组最少多长(如果未指定,则由x
中最大的数决定)。 -
numpy.digitize(x, bins, right=False)
:离散化。如果x
不是一维的,则展平为一维。它返回一个数组,该数组中元素值给出了x
中的每个元素将对应于统计区间的哪个区间。区间由bins
这个一维数组指定,它依次给出了统计区间的从左到右的各个闭合点。right
为True
,则表示统计区间为左开右闭合(]
;为False
,则表示统计区间为左闭合右开[)