2

0 から 2 までの 50 個のランダムな整数 (2 を含まない) の配列内の 0 の数を教えてくれるループを取得しようとしています。そして、得られたゼロの数に対してランダムな整数を再度計算します。

やってみましたが、初期段階で行き詰まり、イライラしているので、助けていただければ幸いです。

from numpy.random import randint

n = 50

R = randint(0,2,n)

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

しかし、それは配列を返さず、通常のように len 関数を使用できないため、0 の数を数える方法がわかりません。

while ループも使用してみましたが、同様の問題に遭遇しました

4

5 に答える 5

4

配列には1と0しか含まれていないため、ゼロの数は明らかになります

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

のを数えるには、次0のようにRすることができます

sum(not n for n in R)

これの利点は、配列に1sとs以外の数がある場合でも機能することです。0


これを指摘してくれたeryksunに感謝します:あなたもすることができます

numpy.sum(R == 0)
于 2012-10-28T21:23:58.703 に答える
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 に答える
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 に答える