本文简要介绍 python 语言中 numpy.random.Generator.multinomial
的用法。
用法:
random.Generator.multinomial(n, pvals, size=None)
从多项分布中抽取样本。
多项分布是二项分布的多元推广。使用其中之一进行实验
p
可能的结果。此类实验的一个示例是掷骰子,其结果可以是 1 到 6。从分布中抽取的每个样本代表n这样的实验。它的值,X_i = [X_0, X_1, ..., X_p]
, 代表结果出现的次数i
.- n: int 或类似整数的数组
实验次数。
- pvals: 类似浮点数的数组
形状为
(k0, k1, ..., kn, p)
的每个p
不同结果的概率。每个元素pvals[i,j,...,:]
的总和必须为 1(但是,只要sum(pvals[..., :-1], axis=-1) <= 1.0
,始终假定最后一个元素说明剩余概率。必须至少有 1 个维度,其中 pvals.shape[-1] > 0。- size: int 或整数元组,可选
输出形状。例如,如果给定的形状是
(m, n, k)
,则每个m * n * k
样本都使用p
元素绘制。默认为 None ,其中输出大小由n
的广播形状决定,并且全部由pvals
的最终维度决定,表示为b=(b0, b1, ..., bq)
。如果 size 不是 None,那么它必须与广播形状b
兼容。具体来说, size 必须有q
或更多元素,并且 size[-(q-j):] 必须等于bj
。
- out: ndarray
绘制的样品,形状大小(如果提供)。提供 size 时,输出形状为 size + (p,) 如果未指定,则形状由
n
和pvals
的广播形状确定,(b0, b1, ..., bq)
增加了多项式的维度,p
,因此该输出形状为(b0, b1, ..., bq, p)
。每个条目
out[i,j,...,:]
是从分布中提取的p
维值。
参数:
返回:
例子:
掷骰子 20 次:
>>> rng = np.random.default_rng() >>> rng.multinomial(20, [1/6.]*6, size=1) array([[4, 1, 7, 5, 2, 1]]) # random
它在 1 上降落 4 次,在 2 上降落一次,依此类推。
现在,掷骰子 20 次,再掷 20 次:
>>> rng.multinomial(20, [1/6.]*6, size=2) array([[3, 4, 3, 3, 4, 3], [2, 4, 3, 4, 0, 7]]) # random
第一次运行时,我们投掷了 3 次 1、4 次 2 等。第二次,我们投掷了 2 次 1、4 次 2 等。
现在,做一个实验,掷骰子 10 次,再掷 10 次,另一个掷骰子 20 次,再掷 20 次:
>>> rng.multinomial([[10], [20]], [1/6.]*6, size=(2, 2)) array([[[2, 4, 0, 1, 2, 1], [1, 3, 0, 3, 1, 2]], [[1, 4, 4, 4, 4, 3], [3, 3, 2, 5, 5, 2]]]) # random
第一个数组显示掷骰子 10 次的结果,第二个数组显示掷骰子 20 次的结果。
装满骰子的骰子更有可能落在 6 号上:
>>> rng.multinomial(100, [1/7.]*5 + [2/7.]) array([11, 16, 14, 17, 16, 26]) # random
模拟 10 次 4 面骰子和 20 次 6 面骰子
>>> rng.multinomial([10, 20],[[1/4]*4 + [0]*2, [1/6]*6]) array([[2, 1, 4, 3, 0, 0], [3, 3, 3, 6, 1, 4]], dtype=int64) # random
从两个类别生成分类随机变量,其中第一个有 3 个结果,第二个有 2 个。
>>> rng.multinomial(1, [[.1, .5, .4 ], [.3, .7, .0]]) array([[0, 0, 1], [0, 1, 0]], dtype=int64) # random
argmax(axis=-1)
然后用于返回类别。>>> pvals = [[.1, .5, .4 ], [.3, .7, .0]] >>> rvs = rng.multinomial(1, pvals, size=(4,2)) >>> rvs.argmax(axis=-1) array([[0, 1], [2, 0], [2, 1], [2, 0]], dtype=int64) # random
使用广播可以产生相同的输出维度。
>>> rvs = rng.multinomial([[1]] * 4, pvals) >>> rvs.argmax(axis=-1) array([[0, 1], [2, 0], [2, 1], [2, 0]], dtype=int64) # random
概率输入应该归一化。作为一个实现细节,最后一个条目的值被忽略并假定占据任何剩余的概率质量,但这不应该被依赖。一个有偏差的硬币,其一侧的重量是另一侧的两倍,应该像这样采样:
>>> rng.multinomial(100, [1.0 / 3, 2.0 / 3]) # RIGHT array([38, 62]) # random
不喜欢:
>>> rng.multinomial(100, [1.0, 2.0]) # WRONG Traceback (most recent call last): ValueError: pvals < 0, pvals > 1 or pvals contains NaNs
相关用法
- Python numpy Generator.multivariate_normal用法及代码示例
- Python numpy Generator.multivariate_hypergeometric用法及代码示例
- Python numpy Generator.standard_normal用法及代码示例
- Python numpy Generator.bytes用法及代码示例
- Python numpy Generator.shuffle用法及代码示例
- Python numpy Generator.choice用法及代码示例
- Python numpy Generator.random用法及代码示例
- Python numpy Generator.logseries用法及代码示例
- Python numpy Generator.uniform用法及代码示例
- Python numpy Generator.standard_t用法及代码示例
- Python numpy Generator.standard_cauchy用法及代码示例
- Python numpy Generator.normal用法及代码示例
- Python numpy Generator.poisson用法及代码示例
- Python numpy Generator.power用法及代码示例
- Python numpy Generator.geometric用法及代码示例
- Python numpy Generator.laplace用法及代码示例
- Python numpy Generator.vonmises用法及代码示例
- Python numpy Generator.noncentral_f用法及代码示例
- Python numpy Generator.gamma用法及代码示例
- Python numpy Generator.weibull用法及代码示例
- Python numpy Generator.gumbel用法及代码示例
- Python numpy Generator.pareto用法及代码示例
- Python numpy Generator.noncentral_chisquare用法及代码示例
- Python numpy Generator.negative_binomial用法及代码示例
- Python numpy Generator.binomial用法及代码示例
注:本文由纯净天空筛选整理自numpy.org大神的英文原创作品 numpy.random.Generator.multinomial。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。