当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python numpy random.mtrand.RandomState.zipf用法及代码示例


用法:

RandomState.zipf(a, size=None)

从Zipf分布中抽取样本。

样本是从Zipf分布中提取的,其中指定参数a> 1。

Zipf分布(也称为zeta分布)是满足Zipf定律的连续概率分布:项目的频率与其在频率表中的排名成反比。

参数:
a float 或 array_like of floats

分布参数。必须大于1。

size int 或 tuple of ints, 可选参数

输出形状。如果给定的形状是(m, n, k), 然后m * n * k抽取样品。如果尺寸是None(默认),如果返回一个值a是标量。除此以外,np.array(a).size抽取样品。

返回值:
out ndarray或标量

从参数化的Zipf分布中抽取样本。

注意:

Zipf分布的概率密度为

p(x) = \frac{x^{-a}}{\zeta(a)},

哪里\zeta是黎曼Zeta函数。

它以美国语言学家乔治·金斯利·齐普夫(George Kingsley Zipf)的名字命名,他指出,一种语言样本中任何单词的出现频率均与其在频率表中的排名成反比。

参考文献:

[1]Zipf,G. K.,“语言中相对频率原理的精选研究”,麻省剑桥:哈佛大学。出版社,1932年。

例子:

从分布中抽取样本:

>>> a = 2. # parameter
>>> s = np.random.zipf(a, 1000)

显示样本的直方图以及概率密度函数:

>>> import matplotlib.pyplot as plt
>>> from scipy import special  # doctest:+SKIP

在50处截断s值,因此绘图很有趣:

>>> count, bins, ignored = plt.hist(s[s<50], 50, density=True)
>>> x = np.arange(1., 50.)
>>> y = x**(-a) / special.zetac(a)  # doctest:+SKIP
>>> plt.plot(x, y/max(y), linewidth=2, color='r')  # doctest:+SKIP
>>> plt.show()
../../../_images/numpy-random-mtrand-RandomState-zipf-1.png

相关用法


注:本文由纯净天空筛选整理自 numpy.random.mtrand.RandomState.zipf。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。