Numpy随机选择函数给出了奇怪的结果

时间:2017-12-29 03:30:26

标签: python python-3.x numpy random

我有一个数字列表和其他与这些数字相对应的概率列表。我试图根据概率从数字列表中选择一个数字。为此,我使用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

有人可以帮帮我吗?

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.