为什么这个 numpy 多项式方法 运行 没有任何错误?
Why does this numpy multinominal method run without any error?
我运行以下行:
np.random.multinomial(10, [1/5., 1/5., 1/5., 1/5., 1/5., 1/5.])
它产生一个输出
array([3, 4, 0, 0, 3, 0])
这意味着当我掷一个 6 面骰子 10 次时,上面的输出表示特定面出现的次数的频率计数。在这里,side 1 出现了 3 次,side 2 出现了 4 次等等。
我的问题是上面的方法不应该因为骰子边的概率值之和 > 1/0 而抛出错误吗?我确定我在这里误解了一些东西,但无法弄清楚是什么。
文档说:
pvals : sequence of floats, length p
Probabilities of each of the ``p`` different outcomes. These
should sum to 1 (however, the last element is always assumed to
account for the remaining probability, as long as
``sum(pvals[:-1]) <= 1)``.
也就是说最后一个元素被赋值为0的概率
运行 这个:
sum_last = 0
for trial in np.arange(20):
sum_last += np.random.multinomial(10, [1/5., 1/5., 1/5., 1/5., 1/5., 1/5.])[-1]
print sum_last
你会看到最后一个元素永远不会出现,概率确实是0
实际上代码只会考虑直到 pvals 总和为 1。所以在这种情况下只有前五个总和。因此,无论您 运行 多少次,数组中的第 6 个元素都将为零。因此,如果您为所有 6 个元素都给出 1/3,它将执行,就像抛出第 3 面的骰子一样,并且在输出数组中,最后 3 个元素将为零。它不必显示错误。一旦总和达到一个就会停止,而忽略其他的。这就是语法。
希望这有帮助。
我运行以下行:
np.random.multinomial(10, [1/5., 1/5., 1/5., 1/5., 1/5., 1/5.])
它产生一个输出
array([3, 4, 0, 0, 3, 0])
这意味着当我掷一个 6 面骰子 10 次时,上面的输出表示特定面出现的次数的频率计数。在这里,side 1 出现了 3 次,side 2 出现了 4 次等等。
我的问题是上面的方法不应该因为骰子边的概率值之和 > 1/0 而抛出错误吗?我确定我在这里误解了一些东西,但无法弄清楚是什么。
文档说:
pvals : sequence of floats, length p
Probabilities of each of the ``p`` different outcomes. These
should sum to 1 (however, the last element is always assumed to
account for the remaining probability, as long as
``sum(pvals[:-1]) <= 1)``.
也就是说最后一个元素被赋值为0的概率 运行 这个:
sum_last = 0
for trial in np.arange(20):
sum_last += np.random.multinomial(10, [1/5., 1/5., 1/5., 1/5., 1/5., 1/5.])[-1]
print sum_last
你会看到最后一个元素永远不会出现,概率确实是0
实际上代码只会考虑直到 pvals 总和为 1。所以在这种情况下只有前五个总和。因此,无论您 运行 多少次,数组中的第 6 个元素都将为零。因此,如果您为所有 6 个元素都给出 1/3,它将执行,就像抛出第 3 面的骰子一样,并且在输出数组中,最后 3 个元素将为零。它不必显示错误。一旦总和达到一个就会停止,而忽略其他的。这就是语法。 希望这有帮助。