我有一个数字列表和其他与这些数字相对应的概率列表。我试图根据概率从数字列表中选择一个数字。为此,我使用NumPy库中的random.choice函数。 据我所知random.choice函数不必根据其概率选择第一个条目(它等于零)。然而,在几次迭代之后,它选择第一个条目。
>>> import numpy as np
>>> a = [1, 2, 3, 4, 5]
>>> p = [0.0, 0.97, 0.97, 0.030000000000000027, 0.030000000000000027]
>>> np.random.choice(a, 1, p)[0]
1
有人可以帮帮我吗?
答案 0 :(得分:3)
You are using it wrong. The signature ofchoice
is:
choice(a, size=None, replace=True, p=None)
Therefore use it with a keyword argument:
>>> a = np.arange(1, 6)
>>> p = [0, 0.04, 0.9, 0.03, 0.03]
>>> np.random.choice(a, p=p)
3
You do:
np.random.choice(a, 1, p)
That means your p
is the argument replace
, not actually p
.
Furthermore, your probabilities p
need to sum to 1
.