我是python的新手,我不理解这个python代码的最后一行。这是什么意思?
import np as numpy
def goat_door(prizedoors, guesses):
#strategy: generate random answers, and
#keep updating until they satisfy the rule
#that they aren't a prizedoor or a guess
result = np.random.randint(0, 3, prizedoors.size)
while True:
bad = (result == prizedoors) | (result == guesses)
if not bad.any():
return result
result[bad] = np.random.randint(0, 3, bad.sum())
prizedoors和猜测是np.random.choice(2,模拟次数)
结果是一个数组,我不知道[bad]的结果是什么。
编辑:我刚刚将import np写为numpy
答案 0 :(得分:4)
result
是一个长度为ndarray
的{{1}},其中每个元素都是从prizedoors.size
中随机抽取的。例如:
[0, 3)
>>> result = np.random.randint(0, 3, 5)
>>> result
array([1, 1, 2, 0, 1])
是一个布尔数组,无论bad
还是result == prizedoors
,都是True。可能result == guesses
和prizedoors
也是布尔数组。在任何情况下,guesses
都会看起来像
bad
>>> bad
array([ True, True, True, False, True], dtype=bool)
计算真人数:
bad.sum()
>>> bad.sum()
4
选择result[bad]
result
:
bad == True
最后,最后一行用新的随机值填充坏值(不一定是好的值,只有新的值):
>>> result[bad]
array([1, 1, 2, 1])