我试图结合几个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)
答案 0 :(得分:4)
这个案例对我来说是正确的:(KE + KU > 1)[:5, :5]
第二种情况只是括号:
((KE + KU > 1) & (KE > 0))[:5, :5]