Python中的多项式样本生成

4 投票
1 回答
1719 浏览
提问于 2025-04-19 01:46

我可以通过以下代码从一个概率数组中生成二项分布的样本,生成的样本大小和输入的概率数组形状是一样的。

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 只能是一个一维的概率数组。

撰写回答