条件组合:Numpy数组

时间:2016-03-23 17:39:35

标签: python 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)

1 个答案:

答案 0 :(得分:4)

这个案例对我来说是正确的:(KE + KU > 1)[:5, :5]

第二种情况只是括号:

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