2016-03-23 76 views
3

我想幾個numpy的條件相結合,並如預期其不添加:組合的條件:numpy的陣列

import numpy as np 
ke, ku = np.arange(30, dtype=int), np.arange(50, dtype=int) 
KE, KU = np.meshgrid(ke, ku, indexing='ij') 

現在,預期以下工作:

>>> (KU > 0)[:5, :5] 
Out[28]: 
array([[False, True, True, True, True], 
     [False, True, True, True, True], 
     [False, True, True, True, True], 
     [False, True, True, True, True], 
     [False, True, True, True, True]], dtype=bool) 

>>> (KE > 0)[:5, :5] 
Out[29]: 
array([[False, False, False, False, False], 
     [ True, True, True, True, True], 
     [ True, True, True, True, True], 
     [ True, True, True, True, True], 
     [ True, True, True, True, True]], dtype=bool) 

>>> ((KE > 0) & (KU > 0))[:5, :5] 
Out[31]: 
array([[False, False, False, False, False], 
     [False, True, True, True, True], 
     [False, True, True, True, True], 
     [False, True, True, True, True], 
     [False, True, True, True, True]], dtype=bool) 

然而,在下一個案例,並不是很多:

>>> (KE + KU > 1)[:5, :5] 
Out[24]: 
array([[False, False, True, True, True], 
     [False, True, True, True, True], 
     [ True, True, True, True, True], 
     [ True, True, True, True, True], 
     [ True, True, True, True, True]], dtype=bool) 

>>> ((KE + KU > 1) & KE > 0)[:5, :5] 
Out[19]: 
array([[False, False, False, False, False], 
     [False, True, True, True, True], 
     [False, False, False, False, False], 
     [ True, True, True, True, True], 
     [False, False, False, False, False]], dtype=bool) 

我預計以下結果 - 爲什麼沒有發生?

array([[False, False, False, False, False], 
     [False, True, True, True, True], 
     [ True, True, True, True, True], 
     [ True, True, True, True, True], 
     [ True, True, True, True, True]], dtype=bool) 

回答

4

這種情況看起來是正確的對我說:(KE + KU > 1)[:5, :5]

第二種情況是隻是一個括號的事情:

((KE + KU > 1) & (KE > 0))[:5, :5]