0

私は、特定の範囲に入る番号を追加し、対応する番号をリストに追加するコードを作成しようとしています。また、cumsum範囲から範囲を引き出す必要があります。

numbers = []
i=0

z = np.random.rand(1000)
arraypmf = np.array(pmf)
summation = np.cumsum(z)

while i < 6:
   index = i-1

    a = np.extract[condition, z] # I can't figure out how to write the condition.
    length = len(a)
    length * numbers.append(i)
4

2 に答える 2

4

何をしようとしているのか完全にはわかりませんが、条件を実行する最も簡単な方法はnumpy、配列全体に条件を適用してマスクを取得することです。

mask = (z >= 0.3) & (z < 0.6)

次に、たとえば、extractまたはma必要に応じて使用できますが、この場合は、次のことを信頼して実行できると思いTrue==1ますFalse==0

zm = z * mask

結局のところ、あなたがしているのが物事を要約する0ことだけである場合、そこにないのと同じであり、あなたはただに置き換えることができlenますcount_nonzero

例えば:

In [588]: z=np.random.rand(10)
In [589]: z
Out[589]: 
array([ 0.33335522,  0.66155206,  0.60602815,  0.05755882,  0.03596728,
        0.85610536,  0.06657973,  0.43287193,  0.22596789,  0.62220608])
In [590]: mask = (z >= 0.3) & (z < 0.6)
In [591]: mask
Out[591]: array([ True, False, False, False, False, False, False,  True, False, False], dtype=bool)
In [592]: z * mask
Out[592]: 
array([ 0.33335522,  0.        ,  0.        ,  0.        ,  0.        ,
        0.        ,  0.        ,  0.43287193,  0.        ,  0.        ])
In [593]: np.count_nonzero(z * mask)
Out[593]: 2
In [594]: np.extract(mask, z)
Out[594]: array([ 0.33335522,  0.43287193])
In [595]: len(np.extract(mask, z))
Out[595]: 2
于 2013-02-05T00:39:08.693 に答える
3

これがあなたがやろうとしている(私が思うこと)するための別のアプローチです:

import numpy as np
z = np.random.rand(1000)
bins = np.asarray([0, .1, .15, 1.])

# This will give the number of values in each range
counts, _ = np.histogram(z, bins)

# This will give the sum of all values in each range
sums, _ = np.histogram(z, bins, weights=z)
于 2013-02-05T01:06:57.363 に答える