2016-03-23 72 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]