Python中的多项式样本生成
我可以通过以下代码从一个概率数组中生成二项分布的样本,生成的样本大小和输入的概率数组形状是一样的。
prob_list = [[0.3,0.3,0.4],[0.4,0.3,0.3]]
prob_array = np.asarray(prob_list)
y_sample = np.random.binomial(size=prob_array.shape, n=1, p=prob_array)
print(y_sample)
输出结果是
[[0 0 0]
[1 1 1]]
输入的概率形状是(2*3),而输出的样本形状也是(2*3),它们是相同的。
那么,能否用多项分布做同样的事情呢?其实可以为单行生成多项分布的样本。
y_sample = np.random.multinomial(size=1, n=1, pvals=prob_array[0])
print(y_sample)
[[1 0 0]]
那么,如何才能把这个方法推广到多行,使得输出的样本形状和输入的概率形状一样呢?
1 个回答
4
我怕你得手动遍历一下 prob_array
。现在 pvals
只能是一个一维的概率数组。