我想用
np.random.choice()
根据给定的概率从列表中得到一个随机值。
但是,我注意到,当我试图将概率列表直接传递给函数时,我得到了错误消息
TypeError: 'float' object cannot be interpreted as an integer
;相反,当我在函数调用中显式地编写列表时,一切都按它应该的方式工作。
请参阅下面的示例了解我的意思:
>>> p = [0.5, 0.5]
>>> np.random.choice(["h","t"],p)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "mtrand.pyx", line 1163, in mtrand.RandomState.choice
File "mtrand.pyx", line 995, in mtrand.RandomState.randint
File "mtrand.pyx", line 996, in mtrand.RandomState.randint
File "randint_helpers.pxi", line 202, in mtrand._rand_int32
TypeError: 'float' object cannot be interpreted as an integer
>>> np.random.choice(["h","t"],p=[0.5,0.5])
't'
是否有人知道如何修复错误并能够将列表传递给函数?显然,我无法在程序中硬编码概率,也无法理解numpy是如何抱怨的,也无法理解为什么会抱怨。
编辑:注意到我应该在发布后立即将p=p传递给函数,我将把它作为一个例子来说明为什么你应该总是避免所有的bug