2

我试图得到一个循环,它将告诉我从 0 到 2(不包括 2)的 50 个随机整数数组中 0 的数量。然后它将再次为获得的零数计算随机整数。

我尝试过这样做,但我在初级阶段陷入困境并且变得令人沮丧,所以任何帮助将不胜感激。

from numpy.random import randint

n = 50

R = randint(0,2,n)

for i in R:
    True = 0
    print array(True)

但它不返回一个数组,我不知道如何计算 0 的数量,因为我不能像往常一样使用 len 函数。

我也尝试使用 while 循环,但遇到了类似的问题

4

5 回答 5

4

由于您的数组仅包含一和零,因此零的计数显然是

num_zeroes = len(R) - sum(R)
于 2012-10-28T21:29:42.427 回答
2

要计算0sR你可以这样做

sum(not n for n in R)

这样做的好处是,即使数组中只有1s 和0s 以外的数字,它也可以工作。


感谢 eryksun 指出这一点:你也可以这样做

numpy.sum(R == 0)
于 2012-10-28T21:23:58.703 回答
0

也许这是您正在寻找的东西:

from numpy.random import randint

n = 50

R = randint(0,2,n)

def get_number_of_zeros(x):
    return sum(0 == ele for ele in x)

while(len(R) > 0):
    number_of_zeros = get_number_of_zeros(R)
    print 'number of zeros is {}'.format(number_of_zeros)
    R = randint(0, 2, number_of_zeros)

结果:

number of zeros is 25
number of zeros is 11
number of zeros is 7
number of zeros is 4
number of zeros is 1
number of zeros is 1
number of zeros is 1
number of zeros is 0
于 2012-10-28T22:04:54.847 回答
0

生成数组:

random_list = [random.randint(0,2) for x in xrange(50)]

0 的个数:

num_zeros = sum( 1 for x in random_list if x==0 )

再次生成数组:

random_list = [random.randint(0,2) for x in xrange(num_zeros)]
于 2012-10-28T21:43:41.457 回答
0

嗯,不需要循环和求和。如果您有一个整数数组,则可以像这样计算零(或任何其他单个数字)的数量:

>>> R = [ 0, 1, 5, 0, 0]
>>> print("There are", R.count(0), "zeros")
There are 3 zeros
于 2016-06-09T20:54:45.960 回答