何をしようとしているのか完全にはわかりませんが、条件を実行する最も簡単な方法は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