Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Combination of conditions: Numpy array

Tags:

python

numpy

I'm trying to combine several numpy conditions, and its not adding as expected:

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

Now, the following works as expected:

>>> (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)

However in the next case, not so much:

>>> (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)

I expected the following outcome - why didn't it happen?

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)
like image 548
FooBar Avatar asked Jun 03 '26 11:06

FooBar


1 Answers

This case looks correct to me: (KE + KU > 1)[:5, :5]

The second case is just a matter of parenthesis:

((KE + KU > 1) & (KE > 0))[:5, :5]
like image 121
Alessandro Avatar answered Jun 05 '26 01:06

Alessandro



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!