试图理解这个Python代码

时间:2014-01-01 04:09:23

标签: python algorithm analytics

我是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

1 个答案:

答案 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 == guessesprizedoors也是布尔数组。在任何情况下,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])